匹配不同的線條組成的圖案,我想用這個在Perl
my $line = <>;
if($line =~ /hello\nthere/m){
say "matched";
}
else{
say "no match";
}
然而,以匹配不同的線條組成的圖案,當我運行含有以下內容的文件的程序,它不匹配。
hello
there
我試過使用點運算符(。)和/ s修飾符以及。任何幫助,將不勝感激。謝謝。
匹配不同的線條組成的圖案,我想用這個在Perl
my $line = <>;
if($line =~ /hello\nthere/m){
say "matched";
}
else{
say "no match";
}
然而,以匹配不同的線條組成的圖案,當我運行含有以下內容的文件的程序,它不匹配。
hello
there
我試過使用點運算符(。)和/ s修飾符以及。任何幫助,將不勝感激。謝謝。
<>
只讀取一行輸入,除非您清除$/
變量。
my $all_lines = do { local $/; <> };
然後,您可以匹配
$all_lines =~ /hello\nthere/;
無需/m
,因爲它改變了^
和$
,這兩者都不是存在於正則表達式的含義。
非常感謝。這工作。我完全忘了它逐行閱讀。 –
$ /只是本地調用子程序調用的改變,還是全局改變?例如,如果我在子例程上更改它,它會在另一個子例程中重置爲默認值嗎? –
'local'在最近的範圍內改變它的值,'do {...}'限制範圍。 – choroba
我對Perl不是很熟悉,但是鑽石操作員不會逐行迭代嗎?在這種情況下,你不會同時把'hello'和'there'同時出現。 – CAustin
您可以設置一些變量,以便它可以立即吃掉所有的輸入,但是。默認情況下,你一次只能得到一行。 – cHao
我完全忘了那個。謝謝您的幫助! –