元素對我有兩份名單:的Perl:在兩個列表
my @prefixes = ["abc", "def", "ghi", "jklmn"];
my @strings = ["abc123", "def456", "jklmnopqrst"];
我需要找到每個字符串正確的前綴,使「ABC123」屬於「ABC」和「def456」屬於「DEF 「和」jklmnopqrst「屬於」jklmn「。 所有字符串在@prefixes中都有一個前綴,但並非所有前綴都有匹配的字符串(請參閱「ghi」)。
我有這樣的代碼:
use List::Util qw(first);
...
foreach my $str (@strings) {
my $prefix = first { $_ eq substr($str, 0, length($_)) } @prefixes;
print "$prefix\n";
# do something with $str and $prefix together
}
但它不工作,我越來越Use of uninitialized value $prefix in concatenation (.) or string
有什麼不對?
UPDATE:所以這是一個簡單的修復。我應該使用()而不是[]初始化我的列表。爲了不關閉這個,你將如何擺脫foreach
聲明?
好的,我很笨。我應該用()而不是[]來初始化我的數組。 – papaiatis
使用'map' - 但是你沒有像使用foreach一樣處理內部的靈活性。 – zdim