Perl

‘(…) 是什麼意思?=1:1:1 :2’ 在 Perl 中做什麼?

  • January 28, 2018

我遇到了這兩行程式碼,儘管我一直試圖弄清楚它們的作用,但我仍然懷疑它們在程式碼中的含義。我正在談論的程式碼是:

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 中與正則表達式相關的變數

引用自:https://unix.stackexchange.com/questions/420015