我想要一个从特殊文件句柄中读取的 Perl 模块,并将其<STDIN>
传递给子例程。当您看到我的代码时,您就会明白我的意思。这是以前的情况:
#!/usr/bin/perl
use strict; use warnings;
use lib '/usr/local/custom_pm'
package Read_FH
sub read_file {
my ($filein) = @_;
open FILEIN, $filein or die "could not open $filein for read\n";
# reads each line of the file text one by one
while(<FILEIN>){
# do something
}
close FILEIN;
现在,子例程将文件名(存储在 中$filein
)作为参数,使用文件句柄打开文件,并使用精细句柄逐行读取文件的每一行。
相反,我想从中获取文件名<STDIN>
,将其存储在变量中,然后将此变量作为参数传递给子例程。从主程序:
$file = <STDIN>;
$variable = read_file($file);
该模块的子程序如下:
#!/usr/bin/perl
use strict; use warnings;
use lib '/usr/local/custom_pm'
package Read_FH
# subroutine that parses the file
sub read_file {
my ($file)= @_;
# !!! Should I open $file here with a file handle? !!!!
# read each line of the file
while($file){
# do something
}
有谁知道我该怎么做?我很感激任何建议。