Nel seguente codice, cosa fa esattamente il comando <*>
?Che cosa significa <*> in Perl?
my @usbHddFileList = <*>;
foreach $usbHddFile (@usbHddFileList)
{
system("rm -f $curMountDir/$usbHddFile </dev/null> /dev/null 2>&1");
}
Nel seguente codice, cosa fa esattamente il comando <*>
?Che cosa significa <*> in Perl?
my @usbHddFileList = <*>;
foreach $usbHddFile (@usbHddFileList)
{
system("rm -f $curMountDir/$usbHddFile </dev/null> /dev/null 2>&1");
}
<>
significa readline(ARGV)
<IDENTIFIER>
significa readline(IDENTIFIER)
<$IDENTIFIER>
significa readline($IDENTIFIER)
<...>
(altro) significa glob(qq<...>)
Così <*>
significa glob(qq<*>)
o glob('*')
.
glob
viene utilizzato per generare un numero di stringhe o nomi di file da un motivo.
In contesto elenco, <*>
aka glob('*')
restituisce tutti i file nella directory di lavoro corrente diversi da quelli il cui nome inizia con .
.
Se ciò che è all'interno delle parentesi angolari è né un filehandle nè una semplice variabile scalare contenente un nome filehandle, typeglob, o typeglob riferimento, viene interpretato come schema di nome essere globbed, e viene restituito un elenco di nomi di file o il nome file successivo nell'elenco , a seconda del contesto. Questa distinzione è determinata solo per motivi sintattici.
E nel codice OP in particolare, restituisce i nomi di tutti i file (senza punti) nella directory di lavoro corrente e li memorizza in '@usbHddFileList '. – ThisSuitIsBlackNot
Vedere anche [Differenza tra due forme di comando jolly Perl nome file] (http://stackoverflow.com/questions/12115772/difference-between-two-forms-of-perl-filename-wildcard-command) –
A parte: L'uso di 'system (" rm ... ")' per eliminare i file è ** estremamente ** cattivo formato, e incorre in rischi per la sicurezza (si pensi a un file con '$ (rm -rf ~)' nel suo nome). Usa invece 'unlink()'. –
Ri: '" forse ai motori di ricerca non piacciono i caratteri speciali "' .. In google puoi citare caratteri speciali per exampe [questa ricerca di google] (https://www.google.no/?gws_rd=ssl# q = perl +% 22-x% 22) non trova il file test operator a meno che non includi le virgolette che si trovano –