在下面的代碼,到底是什麼在<*>
命令嗎?<*>在Perl中的含義是什麼?
my @usbHddFileList = <*>;
foreach $usbHddFile (@usbHddFileList)
{
system("rm -f $curMountDir/$usbHddFile </dev/null> /dev/null 2>&1");
}
在下面的代碼,到底是什麼在<*>
命令嗎?<*>在Perl中的含義是什麼?
my @usbHddFileList = <*>;
foreach $usbHddFile (@usbHddFileList)
{
system("rm -f $curMountDir/$usbHddFile </dev/null> /dev/null 2>&1");
}
<>
意味着readline(ARGV)
<IDENTIFIER>
意味着readline(IDENTIFIER)
<$IDENTIFIER>
意味着readline($IDENTIFIER)
<...>
(別的)指glob(qq<...>)
所以<*>
意味着glob(qq<*>)
或glob('*')
。
glob
用於生成多個從一個圖案串或文件名。
在列表上下文中,<*>
又名glob('*')
返回當前工作目錄中除名稱以.
開頭的文件以外的所有文件。
如果角度括號內什麼是既不是文件句柄,也不含有一個文件句柄名 簡單的標量變量,類型團,或 類型團引用,它被解釋爲一個文件名模式是 匹配替換的,並根據上下文返回 列表中的文件名列表或下一個文件名。單獨依據句法理由確定 。
而在OP的代碼,具體地講,在'@usbHddFileList返回當前工作目錄中的所有(非點)文件,並將它們的名字'。 – ThisSuitIsBlackNot
另請參見[兩種形式的Perl文件名通配符命令之間的區別](http://stackoverflow.com/questions/12115772/difference-between-two-forms-of-perl-filename-wildcard-command) –
Aside:使用'system(「rm ...」)'來刪除文件是非常糟糕的形式,並且會帶來安全風險(想想名字中帶有$(rm -rf〜)'的文件)。改爲使用'unlink()'。 –
回覆:'「也許搜索引擎不喜歡的特殊字符」'。在谷歌,你可以給特殊字符exampe [此谷歌搜索(https://www.google.no/?gws_rd=ssl# q = perl的+%22-X 22%)未找到文件測試操作,除非你包括surronding報價 –