2

私はperlが初めてです。

変数は 2 つの値を取ることができると言いたいのですが、それを別の関数から呼び出します。

私は試した:

  my(@file) = <${dirname}/*.txt || ${dirname}/*.xml> ;

しかし、これは2番目の値では機能していないようです。何か提案はありますか?

4

5 に答える 5

1

私の理解が正しければ、ファイルが見つからない場合は 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;
于 2013-04-30T09:54:23.583 に答える
0

これは機能します

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 でカバーされています

楽しむ

于 2013-04-30T09:56:43.517 に答える