So this is strange, when i run this code on the file on its own away from what i am trying to do.
#!/usr/bin/perl
my $file = shift;
open (LOG, "<$file");
my $tag1 = "11=Order53:1:1140693468";
@logarray=<LOG>;
foreach(@logarray){
if(($_=~ m/35=8/)&&($_ =~ m/$tag1/)){
printf ("$_\n");
}
}
I get the result i am looking for all be it away from what i am trying to do.
$ perl t.pl fix.log
8=FIX.4.29=034435=849=EXLINK_COMPLEX56=COMPLEX_EXLINK50=COMPLEXGATE57=
+DBL9991134=552=20060223-11:18:3
31=L6096=0.000011=Order53:1:114069346814=0.000017=1118339840020=031=0.
+0000000032=0.000037=132710014138=1.000039=054=155=Tester60=20060223-1
+1:18:33150=0151=1.0000109=Test23=0167=FUT200=200603207=Test
40=144=0.0000000010=026
$
But in my main code , all i do is call this routine and ask it to search for the file for the same entries as above, and return the results.
sub readfile() {
my($tag1,$tag2) = @_;
open(FF, "<$fixmessageloc") || die ("Unable to open file: $!: readfil
+e_rt \n");
my @logarray = <FF>;
if($debug){&writelog(1,"DEBUG: Entered into readfile_rt: passed ($tag
+1)($tag2)");}
foreach(@logarray){
if(($_ =~ m/35=8/)&&($_ =~ m/$tag1/)){
if(($debug)&&($datadumperdebug)){&writelog(1,"DEBUG: readfile_rt:
+ found string $_");}
printf "Found = $_\n";
}
}
But that returns loads of rows and not one row, and some of them don't even match