1 2 3 4 5 6 7 8 9 10
#!/usr/bin/perl use strict; use warnings; my $input = "-- -----"; if($input !~ /^\*\*\*INPUT STATEMENT:/i){ print "Treffer: ".$input."\n"; }
1
2
3
4
5
$ perl -E 'say "1" =~ !/^\*\*\*INPUT STATEMENT:/i'
1
$ perl -E 'say "-- -----" =~ !/^\*\*\*INPUT STATEMENT:/i'
$
2013-06-21T10:50:51 reneeDas !/^\*\*\*INPUT STATEMENT:/i wird *vor* dem Match ausgeführt, was widerum ein ! ($_ =~ /^\*\*\*INPUT STATEMENT:/i) ist. Da in $_ nichts steht, gibt das keinen Treffer. Das aber negiert gibt "1". Und $input =~ 1 ist unwahr, weil keine 1 vorkommt.
Wenn in $input eine 1 steht, bekommst Du einen Treffer:
Code: (dl )1
2
3
4
5$ perl -E 'say "1" =~ !/^\*\*\*INPUT STATEMENT:/i'
1
$ perl -E 'say "-- -----" =~ !/^\*\*\*INPUT STATEMENT:/i'
$