perl Как прочитать аргумент командной строки, как будто это содержимое файла - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть функция, которая принимает имя файла и печатает содержимое файла

#test.pl
while (<>) {
    print $_;
}
exit(0);

Я хочу запустить это в командной строке, за исключением того, что вместо имени файла я хочу использовать фактическое содержимое в качестве параметра без изменения скрипта, аналогично анонимному FIFO (например, оператор <(...) в оболочке) заменить строку имени файла ее содержимым? </p>

1 Ответ

2 голосов
/ 17 апреля 2019

Это вопрос оболочки, но вы не указали, какая оболочка.

ш

Проще всего просто передать данные в STDIN.

printf 'foo bar' | test.pl

printf 'foo\nbar\n' | test.pl

test.pl <<'.'
foo
bar
.

Баш

В дополнение к решениям для sh вы также можете использовать следующее:

test.pl <<<'foo bar'

test.pl <<<$'foo\nbar\n'

test.pl <( printf 'foo\nbar\n' )

Последний избегает использования STDIN. Это (внутренне) сложнее, чем другие решения, но позволяет передавать несколько «виртуальных файлов».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...