while(<@thisArray>)
Czy ktoś wie, co to dokładnie zrobiłoby? Byliśmy po prostu o dyskusji na temat tego, jak jest to kod jest zazwyczaj coś takiego:podczas gdy (<@array>) efekty dla perl
while(<STDIN>)
while(<@thisArray>)
Czy ktoś wie, co to dokładnie zrobiłoby? Byliśmy po prostu o dyskusji na temat tego, jak jest to kod jest zazwyczaj coś takiego:podczas gdy (<@array>) efekty dla perl
while(<STDIN>)
<@thisArray>
pracuje jako glob(@thisArray)
. Tak więc daje listę wszystkich plików pasujących do członków tablicy.
Jeśli element tablicy nie jest zgodny z plikiem, zwracany jest sam element.
Powoduje iterację po nazwach plików zgodnych z wzorami w @thisArray
.
Wynik perl -MO=Deparse -e '1 while(<@thisArray>)'
pokazuje, że <>
przekształca się glob
:
use File::Glob();
'???' while defined($_ = glob(join($", @thisArray)));
Od glob
instrukcji:
W kontekście skalarnym, iteracje glob przez takich rozszerzeń nazw plików, wracając undef gdy lista jest wyczerpany .
Wartość domyślna dla $"
jest przestrzeń, dlatego wiele wzorów z @thisArray
zostaną połączone w jeden ciąg znaków, a następnie dzielone z powrotem przez przestrzeń wewnątrz glob
:
Uwaga że glob dzieli swoje argumenty na spacji i traktuje każdego segment jako oddzielny wzór.
Wielkie dzięki. Używałem go do przeliczenia, więc liczba byłaby odległa. – Psyllex
Nie powinno się nic robić, ponieważ '@ tablica' nie jest nazwą pliku, jest nazwą tablicy. – SexyBeast