我从一个测试文件(cat file
的内容管道中获取数据时有一个程序。我通常使用菱形运算符从STDIN逐行获取数据,直到最后一行。麻烦的是我想为多个子程序重用相同的数据。如何重置STDIN的读取以便可以从第一行再次读取数据?
sub downloadsrt {
print "Printing list of subtitle files in downloadable form..\n";
while (<>) {
chomp($_);
(my $fname,my $path, my $suffix) = fileparse($_);
$_=$fname;
my ($name, $ext) = $fname =~ /(.*)\.(.*)/;
#For srt
my $newfile=$path.$name.".$ext";
$newfile =~ s/\s/%20/g;
$newfile =~ s/\/root/http:\/\/$localip/;
print $newfile."\n";
}
}
sub dummysub {
while (<>) {
// Something else
}
}
downloadsrt;
dummysub;
我想使用多个子程序访问STDIN,每个子程序都应该从STDIN的第一行获取数据。
除非我弄错了,否则这不是词法范围。
答案 0 :(得分:1)
正如@mpapec所建议的那样,您需要将STDIN中的数据存储到数组中:
my @stdin = <>;
mysub_1(\@stdin);
mysub_2(\@stdin);