2016-01-22 171 views
1

我有一個變量,其中有兩個值用分號分隔。我想將這些值中的一個值變爲一個變量,另一個值變爲另一個變量。我試圖這樣做使用:將變量拆分爲兩個字段

my $firstField = `echo $line | awk -F; '{print $1}'`; 

但它越來越解釋非常奇怪。我最好如何做到這一點?

回答

4

這裏絕對不需要涉及任何外部工具。使用perl!

my $firstField = (split(/;/, $line))[0]; 

由於Perl的規則"If it looks like a function call, it's a function call",所以需要外部圓括號。沒有額外的括號,[0]被解釋爲函數調用的下標(這是無效的),而不是作爲返回的列表的下標。

或者如果你喜歡:

my ($firstField) = split /;/, $line; 

這種分配由split返回變量列表的第一個值。

+0

謝謝你的幫助,這很好用! – Roguebantha

+0

請解釋語法錯誤的解決方案 – Borodin

+0

@Borodin我已經添加了一些解釋 - 如果您認爲可以改進,請告訴我。 –

0

你可以得到你想要一個分裂的呼叫許多: 如果你想讓他們在標量變量,使用

my ($a, $b) = split(";", $inputstring); # add $c, $d, etc as you like to the list 

或得到一個可變數目到一個數組中使用:

my @parts = split(";", $inputsring); 
相關問題