1. ホーム
  2. スクリプト・コラム
  3. パール

Perl コマンドライン引数内蔵配列 @ARGV

2022-02-02 13:37:24

Perl スクリプトが実行されるとき、コマンドラインから渡された引数は組み込み配列 @ARGV に格納されます。これは、PERL が引数を受け取るために使用するデフォルト配列です。
使い方は

コピーコード コードは以下の通りです。
perl my.pl $ARGV[0] $ARGV[1]

具体的な例を見てみましょう。
例えば、ファイル1の内容。
コピーコード コードは以下の通りです。
1320238
1320239
1320239
1320238
1320238
1320238
1320235
1320237

ファイル2の内容。

コピーコード コードは以下の通りです。
102 5709072117805887 4001 1301854
102 5709072117807510 4001 1320292
102 5709072117838653 4001 1301857
102 5709072117814280 4001 1305832
102 5709072117839397 4001 1310673
102 5709072117839335 4001 1311270

ファイル1の内容を先に読んでからファイル2の内容を読みたいのですが、ファイル2の内容を読むときに、ファイル2の最後の列が上のファイル1に含まれる必要があるのです。

コピーコード コードは以下の通りです。
[root@localhost ~]$ perl ex.pl 1.txt 2.txt
[root@localhost ~]$ cat ex.pl
#! /usr/bin/perl
use strict;

open(ONE,"$ARGV[0]") or die $! ;
open(TWO,"$ARGV[1]") or die $! ;

my %hash;
while (<TWO>) {
    chomp;
    my @line=split;
    my $column4=$line[3];
    $hash{$column4}=$_;
}

while (<ONE>) {
     chomp;
     print $hash{$_} if defined $hash{$_};
}

print"\n";