Если программа читает с STDIN
, тогда просто установите STDIN
в качестве открытого дескриптора файла, которым вы хотите, чтобы оно было:
#!perl
use strict;
use warnings;
use Test::More;
*STDIN = *DATA;
my @a = <STDIN>;
is_deeply \@a, ["foo\n", "bar\n", "baz\n"], "can read from the DATA section";
my $fakefile = "1\n2\n3\n";
open my $fh, "<", \$fakefile
or die "could not open fake file: $!";
*STDIN = $fh;
my @b = <STDIN>;
is_deeply \@b, ["1\n", "2\n", "3\n"], "can read from a fake file";
done_testing;
__DATA__;
foo
bar
baz
Возможно, вы захотите прочитать больше о typeglobs в perldoc perldata
и больше о превращении строк в поддельные файлы в документации по open
(смотрите для "Начиная с v5.8.0, perl собирался с использованием PerlIO по умолчанию.") в perldoc perlfunc
.