我的這段代碼的目標是淨化元素數組(URL的列表,其中一些包含特殊字符,如%
),以便我最終可以將其與另一個URL文件進行比較並輸出哪些匹配。 URL的列表來自.csv
文件,第一個字段是我想要的URL(以及其他一些條目,我通過快速if()
聲明跳過)。如何在foreach循環中修改Perl數組中的元素?
foreach my $var(@input_1) {
#Skip anything that doesn't start with http:
if ((/^[#U]/) || !(/^h/)) {
next;
}
#Split the .csv into the relevant field:
my @fields = split /\s?\|\s?/, $_;
$var = uri_unescape($fields[0]);
}
我的分隔符是csv中的|
。在當前的設置中,當我將$_
更改爲$var
時,它只返回空白行。當我在循環開始時刪除$var
聲明並使用$_
時,它將以正確的格式輸出URL。但在這種情況下,我怎樣才能將輸出分配給數組中的同一個元素?這是否需要第二個數組輸出值?
我對perl比較陌生,所以我確信有一些東西我失蹤了。我現在還不知道爲什麼在foreach
聲明中刪除$var
會中斷@fields
行的解析,但刪除它並使用$_
則不行。閱讀perlsyn文檔並沒有達到我想要的那麼多。任何幫助感謝!
您並未將所有'$ _'都更改爲'$ var'。 'if'條件和'split'仍然使用'$ _'。 – shawnhcorey