how to open a file and Search for a string

i have a file with some text , when i open and search for some string i am getting errors as below

No such class FILE at work.pl line 6, near "open my FIL
syntax error at work.pl line 6, near "my FILE,"
Execution of work.pl aborted due to compilation errors.

my file contains text as below

hihih
didj lmd
dnkndkd
dnkondll
bkdfkdfkndkfsnf DCLIENT: lost connection to BE
ndknkdsnsd

and below is my code, can u please tell me where the problem is


$koti = "kot.txt";
open my FILE,'>', $koti or die "'$koti' file will not open $!";
while (<TEST>) {
  if ($_ =~ m/DCLIENT: lost connection to BE/g) {
    print "Connection Lost"
  }
}

Open in new window

koti688Asked:
Who is Participating?
 
vikaskhoriaCommented:
There are two issue with the code segment you have pasted:

1. Using my for FILE , my is not required here. That is giving the error.
2. The other one is a programing error, you are declaring the file-handle as FILE and using TEST in while loop to read data.

So these two line should look like this:

open FILE,'>', $koti or die "'$koti' file will not open $!";
while (<FILE>) {

0
 
Romi KuntsmanBig Data EngineerCommented:
Does it work if you put $file instead of FILE?
0
 
Kim RyanIT ConsultantCommented:
FILE is a file handle, not a perl variable. Try this

$koti = "kot.txt";
open FILE,">$koti" or die "'$koti  file will not open $!";
while (<FILE>) {
  if ($_ =~ m/DCLIENT: lost connection to BE/g) {
    print "Connection Lost"
  }
}
close(FILE);
0
Cloud Class® Course: Ruby Fundamentals

This course will introduce you to Ruby, as well as teach you about classes, methods, variables, data structures, loops, enumerable methods, and finishing touches.

 
thiyagukTech Lead Commented:
open IN, "myfile.csv" or die "cannot open";
while(<IN>)
{
 $flag=1 if(/mystring/);
 print if($flag);
}

or

if unix, you can use sed/awk

sed -n '/pattern/,$p' file
 
awk '/pattern/{f=1}f' file




0
 
FishMongerCommented:
>> FILE is a file handle, not a perl variable. Try this

Actually, it's neither.   At this point it's only a bareword.

romi_k was nudging koti688 in the right direction.  Since perl 5.6 it's preferable to use a lexical var for the filehandle instead of a bareword and the 3 arg form of open.

open my $FILE, '>', $koti or die "'$koti' file will not open $!";

Open in new window

0
 
zlobchoCommented:
Try this:
#!/usr/bin/perl

open (FILE,"kot.txt") or die "kot.txt file will not open $!";
while (<FILE>) {
  if ($_=~m/DCLIENT: lost connection to BE/) {
    print "Connection Lost";
  }
}
  close FILE;
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.