人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Perl で質問があります。

みなさんは、プログラムを作る場合、環境変数というか、そのプログラム内での固定数値などを宣言することがあると思います。

たとえば、自分はプログラムの頭の方に、

my $YOMIKOMI_KAZU = 4;

としておいて、ソース内は

if ( $i == $YOMIKOMI_KAZU ) { print "ちゃんと読み込めたよ"; }

とかするようにしています。
しかし、プログラムを書いていくと

「この、my $YOMIKOMI_KAZU = 4;っていうの、ソースの頭じゃなく別のファイルで管理した方が良いなー。」
とおもいました。

Perlでこのような問題を解決する場合には、どのようにすればいいでしょうか?
よろしくお願いいたします。


●質問者: zachouR
●カテゴリ:インターネット ウェブ制作
✍キーワード:Perl print ソース ファイル プログラム
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● yo-kun
●23ポイント

単純に別ファイルにするには


別ファイルに

my $YOMIKOMI_KAZU = 4;

などと定数を書いておいて、一番最後の行で

1;

を書いておきます。


それを使うプログラム側では最初のほうで

require 'ファイル名';


としておけばOKです。

http://cocohome.hp.infoseek.co.jp/perl_ref/require.html

◎質問者からの返答

ありがとうございます。

これで、便利になります!


2 ● cubick
●23ポイント

別ファイル(ここではhoge.plとします)に定義し、呼び出し側で

require 'hoge.pl';

とすれば定義ファイルの内容を取り込む事が出来ます。


ただし注意点として、定義ファイル(hoge.pl)の最後にかならず、

1;

を記述しておく必要があります。


http://www.rfs.jp/sb/perl/05/require.html

◎質問者からの返答

単純に、requireを使えば解決するんですねー。

ありがとうございます!


3 ● tezcello
●22ポイント

最近はPHPでやってるのでハズしてるかも知れませんが...


通常ライブラリを使用する時は、package, local などを使って重複を避けていると思いますが、これらを使わなければ全てグローバル変数として扱われませんでしたっけ?

なので、初期値を設定するサブルーチンをもつライブラリを用意して、require してからそのサブルーチンを呼んでやればOKではないでしょうか。


もちろん、チャンと package 宣言して、$パッケージ名::変数名 してやってもいいんですが。

http://q.hatena.ne.jp/1190815879

◎質問者からの返答

PHPでは、HTMLソースの中にとして、よく利用していました。

ありがとうございます。


4 ● tkyk3
●22ポイント
require 'const.pl';

はどうでしょうか。

const.pl(別ファイル)

my $YOMIKOMI_KAZU = 4;
1;

requireは定数だけでなく、サブルーチンをまとめたりするのにも使われます。

但し、サブルーチンが名前の衝突など色々問題が出てきては困ってしまうので、大抵package文を併用することが多いです。

package calc;

sub plus {
 print "calc...";
}
1;
require 'calc.pl';
hoge::calc();

と言っても、今ではuse文を使ってモジュール化したプログラムを扱うことが一般的のようです。

Perl の use と require の違い

http://iandeth.dyndns.org/mt/ian/archives/000592.html

サブルーチン、ライブラリ

http://www.site-cooler.com/kwl/perl/9.htm

◎質問者からの返答

ありがとうございます。

単純に変数をまとめるには、requireがいちばんよさそうですねー。

助かりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ