サブルーチンをライブラリにしてそれを呼び出して使う〜require, なぜ最後に1をつけるのか
◎お題
配列の重複している要素をまとめるサブルーチンを作り外部ファイルにしたものを、他のプログラムで呼び出し実行する。
■サブルーチン(arrutil.pl)
※呼び出して実行するプログラムと同じディレクトリにおく。
#! /usr/bin/perl use strict; use warnings; sub arrutil { my %in=(); my @array2=(); for (@_) {$in{$_}='a';} for (keys %in) {push (@array2,$_);} return \@array2; } 1;
■サブルーチンを呼び出して実行するプログラム(test.pl)
#! /usr/bin/perl use warnings; use strict; require "arrUtil.pl"; my @array=(1,4,7,2,6,1,4,4,8,7,9,0,2,1); my $ans=&arrutil(@array); print "@$ans";
◎ポイント
サブルーチン(arrutil.pl)の最後に、「1;」を必ず入れる。入れないと、「arrUtil.pl did not return a true value at test9.pl line 5.」と怒られます。
理由/requireされるファイルは、常に真を返さないと行けないという決まりがあるため。(真は1, 偽は0)