Вопрос вращается вокруг контекста , критической концепции для многих вещей в Perl.
Циклу foreach
требуется список для перебора, поэтому он навязывает контекст спискасоздайте список значений , которые вы видели в документах.Список может быть сформирован из литералов qw(a b c)
и может содержать один элемент;это ваш второй пример, где дается одна строка, формирующая список из одного элемента, который повторяется.
Список также может быть получен из выражения, которое вычисляется в контексте списка;это твой первый пример.Многие операции дают разные результаты в зависимости от контекста, и qx
является таким оператором, как объяснено в ответе моба.Это то, что нужно отметить и быть осторожным.Выражение также может возвращать одно значение независимо от контекста;тогда он просто используется для заполнения списка.