Perl
‘(…) 是什麼意思?=1:1:1 :2’ 在 Perl 中做什麼?
我遇到了這兩行程式碼,儘管我一直試圖弄清楚它們的作用,但我仍然懷疑它們在程式碼中的含義。我正在談論的程式碼是:
my $mapped_from = ($num_phones_in == 60)? = $1 : $2; my $mapped_to = ($num_phones_out == 48)? = $2 : $3;
我真的不明白括號之間的變數後跟問號 do ()?。而且我不知道這兩個用冒號分隔的美元符號(作為變數)的數字是什麼意思。
為了向您提供有關程式碼的更多詳細資訊,在這一部分中,我將使用如下所示的文件:
ah X / au u aU
其中列分別有 60、48 和 39 行。如果有人能給我一個線索,我將非常感激,因為我有點迷路了。
my $mapped_from = ($num_phones_in == 60)? = $1 : $2;
那是語法錯誤。
test ? val_true : val_false
是“三元運算符”if-else
,是語句的內聯形式。如果test
為真,則對val_true
部分求值,如果test
為假,則對val_false
部分求值。問號與括號無關。但= $1
不是一個有效的表達。如果沒有額外的
=
,($num_phones_in == 60)? $1 : $2;
將檢查是否$num_phones_in
為六十,並相應地返回$1
或$2
。
$1
和$2
(etc.) 是引用前一個正則表達式中擷取組內容的變數。如果你這樣做了"afoob" =~ /a(.*)b/
,那麼$1
將包含foo
. 請參閱perlvar 中與正則表達式相關的變數。