Дэвид Б,
В этом контексте они должны быть эквивалентны, однако много раз скобки либо меняют порядок операции, в которой что-то выполняется, либо тип возвращаемой переменной (список).Различные функции могут по-разному обрабатывать списки и массивы / хэши.
Порядок операций
Во время цикла foreach обычно сортируется список:
foreach my $key (sort keys %hash) { ... }
Это также может быть записано как:
foreach my $key (sort(keys(%hash))) { ... }
Списки
С другой стороны, вы должны посмотреть на разницу между списком, массивом и хэшем.Списки обычно являются базовым типом, где хэш / массивы имеют дополнительные функции / возможности.Некоторые функции будут работать только со списками, но не с их скалярным аналогом.
Добавление:
Думаю, мне следует добавить, как Рэндал Шварц (соавтор первой книги о верблюдах)) в предыдущих цитатах указывало, что цикл for выполняется из C, а цикл foreach из Csh.То, что находится внутри скобок, используется для определения того, какой цикл используется в Perl.For / foreach может использоваться взаимозаменяемо только потому, что perl проверяет содержимое в ()
и затем определяет, какую конструкцию использовать.