<STDIN>
特殊なファイル ハンドルから読み取り、これをサブルーチンに渡すPerl モジュールが必要です。私のコードを見れば、私の言っていることが理解できるでしょう。以前の様子は次のとおりです。
#!/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
いる) を引数として取り、ファイル ハンドルを使用してファイルを開き、ファイン ハンドルを使用してファイルの各行を 1 つずつ読み取ります。
代わりに、からファイル名を取得し<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
}
誰も私がこれを行う方法を知っていますか? 提案をいただければ幸いです。