Thanks Linuxer, you adaption worked a treat (inluding glob)
Just so people know I have only been on a 3 day course and I am "self teaching" the rest. So I really do appreciate the assistance and suggestions
That being said :0), I am now moving the script on so that it reads each line and tries to match 2 values, both of which can be either one value or another
I.E the first value can be 7722 or 59001 (appearing before the first occurence of /) and the second value can be N or U or C (which is the 362 character on the line)
Once it matches both it should print the line, if not skip past it.
I've had a go, but once again getting an error
#!/usr/bin/perl # http://perlmonks.org/?node_id=1120387 use strict; use warnings; my $log_dir = '/home/smithc'; my $log_file = "$log_dir/trans.log"; my $trans_dir = '/data/FSA_Retrieval'; # Log handles if ( not open my $loghandle, ">>", $log_file ) { # lexical hand +le and three argument form of open() # syslog ... # what's this? die "Cannot open file $log_file: $!"; } # maybe instead of opendir ... and readdir ... my @files = grep { -f } glob( "$trans_dir/*OT*" ); foreach my $file (@files) { print STDERR "File: $file\n"; print "$file\n"; open my $fh, "<", $file # same here; l +exical file handle and 3-arg-form of open() or die "Cannot open $file: $!"; while ( my $line = <$fh> ) { if (/(7722/|59001/)/ && /.{361}(N|U|C)/) { print; } } close $fh; }
When I run a perl -c against the script I get the compile error
Unmatched ( in regex; marked by <-- HERE in m/( <-- HERE 7722/ at test2.pl line 37
In reply to Re^4: Use of uninitialized value in pattern match (m//)
by chris01010
in thread Use of uninitialized value in pattern match (m//)
by chris01010
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |