インフラエンジニアbacchiのわかったことまとめ

bacchi.me

コマンドライン引数とshift関数

下記のようなコードを見て、なぜ変数に関数を代入?と一瞬思考停止してしまった。

#!/usr/bin/env perl

use strict;
use warnings;

my $file = shift;

open my $fh, '<', $file
  or die qq{Can't open file: "$file": $!};

以下略

このプログラムは下記のように引数を指定して実行するもので、

$ perl example.pl arg

perlではコマンドラインの引数は@ARGVに代入されます。

shift関数は配列の先頭の値を引っぱってくる関数で、コマンドライン引数を取るには以下のようにします。

my $file = shift @ARGV

しらなかったのですが、shift関数の引数は省略可能な場合がある!

冒頭のコードの例のようにコマンドライン引数を変数に代入する場合はshift関数の引数を諸略できる。

  • B!