我想知道的
"$0 =~ s!.*/!!"
在Perl
的意思,我怎麼能學這個語法? 歡迎各類答案。
我想知道的
"$0 =~ s!.*/!!"
在Perl
的意思,我怎麼能學這個語法? 歡迎各類答案。
這會將腳本的名稱($0
)截斷爲其基本名稱。它對診斷有用。如果沒有截斷,您的警告消息
warn "$0: Failed to mumble"
會出來爲
weird/long/path/to/mumble.pl: Failed to mumble at line 3.
而用截斷,它顯示
mumble.pl: Failed to mumble at line 3.
所以它只是一個可讀性的調整的警告消息,真的。但這是一個常見的成語。
初學者的難點可能是認識到s!foo!bar!
只是另一種說法s/foo/bar/
。當你需要對包含斜槓的字符串進行替換時,這是天賜之物。如果沒有這個語法糖,你需要反斜槓s/.*\///
,這對於單斜線來說不是太可怕,但很快就會導致leaning toothpicks。
請參閱perl參考文檔; ['perlvar'](http://perldoc.perl.org/perlvar.html)('$ 0'),['perlop'](http://perldoc.perl.org/perlop.html)('=〜 '和'///')和['perlre'](http://perldoc.perl.org/perlre.html)('。* /')在這裏是相關的。一本好書不會傷害:) – user2864740
......除非它真的在雙引號內,在這種情況下'perlop'部分只是字符串的文字元素。 – tripleee
@tripleee哦,天啊!我甚至沒有考慮到:> – user2864740