2014-02-28 120 views
0
CODE: 
    $str="Feature=Legacy--->dns3.1"; 
    @fea=split/[=-->]/,$str; 
    print $_ foreach(@fea); 

ACTUAL OUTPUT: Feature 
     Legacy 
     dns3.1 

但如果在例如模式匹配需要幫助嗎?

CODE: 
    $str="Feature=Legacy-system--->dns3.1"; 
    @fea=split/[=-->]/,$str; 
    print $_ foreach(@fea); 

OUTPUT: Feature 
     Legacy 
     System 
     dns3.1 

但我想作爲功能遺留系統dns3.1輸出值的任何字符

請幫助我如何解決呢?

+1

'無效的[]範圍「= - 」在正則表達式;'。這是你的實際代碼嗎? – RobEarl

+0

總是'嚴格使用;使用警告;' – Toto

+0

我總是說'使用警告'進行調試。 「嚴格使用」破壞了Perl的許多優點。對不起我的非正統觀點。 – SzG

回答

1

您將拆分正則表達式定義爲單個字符,即=,->。 但是你想拆分=--->

@fea = split /=|--->/, $str; 
0

多部分分裂的想法是有趣的,與之匹配的是

@fea = split /=|-{1,}>/, $str; 

比賽改變我建議也是「 - 」字符,切換到「 - {1,}」這將匹配從1到n的任意數量的' - '字符。

支持註釋,可讀性通常是編碼人員的問題,所以更多的空間和foreach循環是緊密和良好的,但如果他們不是超級Perl程序員,那麼其他人來到您的代碼後會變得艱難。

我從來沒有通過這種方式使用拆分,我喜歡它,現在看起來如此明顯,所以即使老的perl狗也可以學習新的技巧,所以我感謝你。