[Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 317
  • Last Modified:

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

0
koti688
Asked:
koti688
1 Solution
 
Romi KuntsmanCommented:
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
 
thiyagukCommented:
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
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
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
 
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
 
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

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now