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

requireさせてみたんですが、定義した値を使えませんでした。

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/01/05 11:59:00
  • 終了:--

回答(3件)

id:asakura-t No.1

浅倉卓司回答回数151ベストアンサー獲得回数22005/01/05 12:20:41

ポイント15pt

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が表示されると思います。

id:hmsd

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

t1.pl

use constant HOGE => 0

t2.pl

sub hoge

{

print HOGE;

}

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

2005/01/05 12:55:17
id:tonolove No.2

tonolove回答回数158ベストアンサー獲得回数02005/01/05 12:54:28

ポイント15pt

以下では駄目ですか?

[$]$ 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で改ざん

[$]

id:hmsd

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

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

2005/01/05 13:00:35
id:masa-k No.3

こくぶんまさひろ回答回数3ベストアンサー獲得回数02005/01/05 16:01:41

ポイント30pt

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=定数値

[$]

如何でしょうか。

id:hmsd

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

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

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

2005/01/05 16:17:33
  • id:masa-k
    サンプル訂正

    すいません、サンプルに一箇所ミスがありました。。。
    (大丈夫だとは思いますが念の為)

    [$] cat TestConst.pm
    package TestConst;
    # ↑この一文が抜けていました

    use constant HOGE => ’定数値’;
    ### 以下略

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません