私はあなたの問題を使用していないから来ると思われる:
use strict;
use warnings;
スクリプトで
はここで働くスクリプトです。
まず、最初の2つのステートメントの文字列$currentSearch
と$currentLine
には、引用符がありません。それはおそらくタイプミスですが、それは奇妙に見えます。
第2に、ifステートメントでは、スカラーではなく配列として参照します。これが別のタイプミスではないとすれば、それはあなたの問題の原因かもしれません。 $currentSearch
および$currentSearch[$i]
は、2つの全く異なる変数を参照しています。
警告と厳密な宣言なしでは、宣言されていない変数と定義されていない変数を2つ使用しても、間違ったことの兆候はありません。実際に
この:
perl -e 'if ($foo[0]=~ /$bar[1]/) { print "sure, why not?" }'
は、両方の変数@foo
と@bar
が完全に空であっても、実際に成功した試合になるだろう、との文字列を出力します。 strict
とwarnings
とすると、クラッシュしてやり直す必要があります。
とにかく、これは動作します:あなたは、検索文字列内のすべてのメタ文字を持っている場合は、それが、その場合にはあなたが検索文字列にquotemeta
に投げることを試みることができ、エラーを検出することは困難引き起こす可能性があります
my $cs = "DNA/3/44.com/index.html";
my $cl = "Load DNA/3/44.com/index.html .....(3)";
if ($cl =~ /Load\s+$cs[\s\.]+\((\d+)\)/) {
print "Yes: $1\n";
} else { print "Nope!" }
。
出典
2011-06-22 22:59:52
TLP
投稿したときにcurrentSearchとcurrentLine変数を定義する場合は、配列の括弧を取り除く必要があります。これは、文字列(および$ kも同様です)の配列ではありません。実際にcurrentSearchとcurrentLineを配列として定義している場合は、定義を投稿してください。 –