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

perlって、定数定義を1つのファイルでまとめて行い(Cで言うヘッダファイル)、それを色々なソースでrequireして使うってことはできないんでしょうか?
requireさせてみたんですが、定義した値を使えませんでした。

perl初心者なもので...よろしくお願いします。

●質問者: hmsd
●カテゴリ:コンピュータ
✍キーワード:Perl require ソース ファイル 初心者
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● 浅倉卓司
●15ポイント

http://flex.ee.uec.ac.jp/texi/perl/perl_137.html

日本語 perl texinfo - require

問題なくできると思うのですが、どのようにやっているのでしょうか?

たとえば、

t1.pl

$DEFAULT = 100;

1;

__END__

t2.pl

require ”t1.pl”;

print ”$DEFAULT¥n”;

__END__

とした場合、perl t2.plを実行すると100が表示されると思います。

◎質問者からの返答

回答ありがとうございます。

t1.pl

use constant HOGE => 0

t2.pl

sub hoge

{

print HOGE;

}

みたいな書き方をしてました。


2 ● tonolove
●15ポイント

http://d.hatena.ne.jp/dummy2

以下では駄目ですか?

[$]$ cat test.ph

$a = ’test.phのaの値!!’;

[$]$ cat a.pl

#!/usr/bin/perl

require ’./test.ph’;

print ”a=” . $a . ”¥n”;

$a=”a.plで改ざん”;

print ”a=” . $a . ”¥n”;

[$] perl ./a.pl

a=test.phのaの値!!

a=a.plで改ざん

[$]

◎質問者からの返答

回答ありがとうございます。

perlではCみたいに気軽に使えないんですね。


3 ● こくぶんまさひろ
●30ポイント

http://www.google.co.jp/

Google

URL はダミーです。

perl の場合、定数はコンパイル時に展開される( require は実行時に展開される)ので、単純にはいかないですね。

どうしても constant でやりたいという事であれば、 require を BEGIN の中でやるという方法があります。

(あまりオススメ出来る方法ではありませんが)

[$]$ cat const.ph

use const HOGE => ’定数値’;

[$]$ cat a.pl

#!/usr/bin/perl

BEGIN { require ’./const.ph’; }

print ”HOGE=” . HOGE;

[$] perl ./a.pl

HOGE=定数値

[$]

ちなみに、個人的には、パッケージ化して use で読み込む方法を好みます。

例えば、以下の様に。

[$] cat TestConst.pm

use constant HOGE => ’定数値’;

1;

[$] cat a.pl

use TestConst;

print ’HOGE=’ . TestConst::HOGE;

[$] perl ./a.pl

HOGE=定数値

[$]

如何でしょうか。

◎質問者からの返答

ご回答ありがとうございます。

やはりパッケージ化するんですね。

パッケージ化??という状態だったので、サンプルを見てよくわかりました。ありがとうございました!

関連質問


●質問をもっと探す●



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