我有一個程序,同時從一個測試文件的內容的管道獲取數據(cat file
)。我通常使用鑽石算子從STDIN逐行獲取數據,直到最後一行。麻煩的是,我想重複使用多個子例程的相同數據。如何重置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的第一行中獲取數據。
除非我誤會這不是詞彙範圍。
簡短的回答:你不能。但是,對於從STDIN讀取的每一行,您都可以將內容存儲在數組中,或者並行運行您的邏輯。 –
['IO :: Mux'](https://metacpan.org/pod/IO::Mux),也許? – Zaid