Executing your script with the provided files yields the following results for me:
> perl script.pl file1 file2 cd, 2343 ef, 1253 ij, 2343
Is this not the expected result? I suspect your issue is on your command line.
On a side note, it is very dangerous to pass a command line argument directly to a two-argument open as you have done - it allows execution of arbitrary code. You should also check out using the pragmas strict and warnings to save you some potential headaches. Might I suggest the following code?
#!/usr/bin/perl # # use strict; use warnings; my $file1 = shift; my $file2 = shift; my $match = 0; open(IN, "<", $file2) or die "Cannot open file $file2 $!\n"; while(<IN>){ chomp($_); my $s_line = $_; open(INPUT, "<", $file1) or die "Cannot open file $file1 $!\n"; while(<INPUT>){ chomp($_); my $str = $_; if($s_line =~ /$str/){ $match = 1; } } close(INPUT); if($match == 0){ print "$s_line\n"; } $match = 0; } close(IN);
In reply to Re: list lines not found in config (while+if)
by kennethk
in thread list lines not found in config (while+if)
by tangledupinperl
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |