NB: Вы говорите, что подпрограмма выводит список, но я предполагаю, что вы имеете в виду, что она выводит строку. В противном случае этот вопрос является спорным.
Просто разделите вывод на новую строку. Предполагая, что подпрограмма называется subname
:
for my $fqdn (split /\n/, subname())
Как отмечает Брайан Роуч в комментариях, оптимальное решение - заставить подпрограмму возвращать список вместо строки. Тем не менее, это не может быть жизнеспособным решением для вас. В любом случае, если вы хотите попробовать это, просто добавьте split
в соответствующем месте в подпрограмме. E.g.:
sub foo {
...
#return $string;
return split /\n/, string;
}
Если вы хотите продвинуться дальше, вы можете использовать функцию wantarray
, которая определяет, в каком контексте вызывается подпрограмма:
sub foo {
...
return $string unless wantarray;
return split /\n/, string;
}
Хотя это очень мило, это может привести к нежелательному поведению, если вы не знаете, что делаете.