私はperlが初めてです。
変数は 2 つの値を取ることができると言いたいのですが、それを別の関数から呼び出します。
私は試した:
my(@file) = <${dirname}/*.txt || ${dirname}/*.xml> ;
しかし、これは2番目の値では機能していないようです。何か提案はありますか?
私はperlが初めてです。
変数は 2 つの値を取ることができると言いたいのですが、それを別の関数から呼び出します。
私は試した:
my(@file) = <${dirname}/*.txt || ${dirname}/*.xml> ;
しかし、これは2番目の値では機能していないようです。何か提案はありますか?
私の理解が正しければ、ファイルが見つからない場合は 2 番目のオプション ( )@files
にフォールバックする必要があります。*.xml
*.txt
もしそうなら、あなたの構文は近いです。そのはず:
my @files = <$dirname/*.txt> || <$dirname/*.xml>;
また
my @files = glob( "$dirname/*.txt" ) || glob( "$dirname/*.xml" );
また、@files
入力されていることを確認するためにチェックすることをお勧めします (何も持っていない場合はどうなります*.txt
か*.xml
?)
warn 'No @files' unless @files;
これは機能します
my $file = $val1 || $val2;
つまり、$file を $val1 に設定しますが、$val1 が 0 または false または undef の場合、$file1 を $val2 に設定します。
< >
本質的に、変数を次のいずれかの手段で囲む
1) ファイルハンドルとして扱います (例$read=<$filehandle>
)
2)シェルグロブとして使用します(例@files=<*.xml>
)
値 $dirname を補間し、最後に .txt または .xml を追加したいようです。< > はこれを達成しません
関数に 2 つの値を送信する場合は、これが必要な場合があります。
my @file=("$dirname.txt","$dirname.xml");
次に、@file を指定して関数を呼び出します。つまり、myfunction(@file)
関数では
sub myfunction {
my $file1=shift;
my $file2=shift;
このすべては perldocs perlsub と perldata でカバーされています
楽しむ