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
|