Perl
在 Perl oneliner 中有嚴格和警告
我真的很想念
use strict; use warnings
我的 Perl 單行程式碼,例如:perl -ne 'print unless /[0-5],[0-5]?|hernia|.{170,}|benz/' file`
尤其是當我包含由 . 分隔的許多條件時
|
。我注意到,當您有更多條件時,過濾變得越來越不穩定。數據失去或命令執行不穩定的範例
123.Symptoms of hernia are all, except: | happy | energetic | sleeping | down regulation of CNS hello | running 5 Signshello of mercedes benz car model: | Big tyres | Even bigger roller | Massive emergency of try | Hello world | All from above 1
其中正則表達式工作不穩定的兩個條目。
如何在 Perl 單行語句中使用嚴格和警告?如何更好地設計這麼長的條件語句?
如果你想要嚴格和警告,答案是“不要做一個單一的班輪”。幾乎總是有一個班輪遭受 perl 對只寫程式碼的傾向。
而是將其擴展為多線。如果你真的想要 - 你可以使用 HEREDOC 嵌入它
perl <<ENDPERL use strict; use warnings; print "This is a test\n"; ENDPERL
或者:
perl -Mstrict -Mwarnings -e 'print something'
但實際上 - 這不會幫助您調試該正則表達式,因為 RE 不太可能觸發警告。
對於更長的條件,我會選擇權宜之計——把它寫下來,這樣你下次使用它時就不必擔心會遺漏一些東西。您的範例看起來像一個“簡單”的 grep -v 類型構造:
#!/usr/bin/perl use strict; use warnings; my @patterns_to_skip = ( "hernia", "ignshello", ); my $regex = join ( "|", map { quotemeta } @patterns_to_skip ); $regex = qr/$regex/; while ( <> ) { print unless m/$regex/; }