アプリ版:「スタンプのみでお礼する」機能のリリースについて

いまは外部pmプログラム(tensa.pm)を
use tensa;
としています。

これを変数に置き換えることはできますか?

$tensa = tensa.pm;

use $tensa;

とやったらエラーが出てしまったのですが・・・。

A 回答 (3件)

> そんな方法があるなんてすごいですね。


> なんでそんな詳しく知っているのでしょう?
> 私はアマチュアですが、そんな技術つけたいですね。
日本にだって Perl Hackerはたくさん居ますよ(わたしはとてもそこには
入りません)。そういう人はblogを良く書いていたりしますので、そういったところで情報を集めておくと役に立つこともあります。
とりあえずはてなダイアリーにはごろごろいらっしゃいますから、暇なときにでも見てみては?
後は英語でも頑張ってドキュメントを読む(笑)
perldoc.jpというところに日本語訳されたものが(全体の一部分ですけど)ありますから、perlfaqあたりを読んでみると良いでしょう。

参考URL:http://perldoc.jp/docs/perl/5.6.1/
    • good
    • 0

直接はできません。

なぜなら、useは中間コードへのコンパイル時に行われるものであり、そのときには変数の内容を参照することはできないからです。

ただし抜け道はありまして、

use strict;
my $module = "CGI";
eval qq!use $module!;

print $CGI::VERSION;

のように "use モジュール名" という文字列を evalしてやることで目的のことはできます。

なお、UNIVERSAL::require というモジュールをuseすることにより、

"モジュールを表す文字列/変数"->use

で、動的にuseすることが可能になります。
ただしこれは標準モジュールではないので、CPAN等から入手する必要があります。

参考URL:http://search.cpan.org/~mschwern/UNIVERSAL-requi …
    • good
    • 0
この回答へのお礼

回答ありがとうございました。疑問が解消されました。

そんな方法があるなんてすごいですね。
なんでそんな詳しく知っているのでしょう?
私はアマチュアですが、そんな技術つけたいですね。

お礼日時:2006/05/27 03:29

出来ないと思います。



ロードされるタイミングの問題ですから、
requireならいけると思います。


#素朴な疑問なのですが、なぜ変数なのでしょう・・。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。疑問が解消できてよかったです。

>requireならいけると思います。

そうなんですよね。変数の問題が起きてしまって。

>#素朴な疑問なのですが、なぜ変数なのでしょう・・。

他人が書いたプログラムを改造しているのですが、
記述のルールでrequireなどすべて変数で表示されて
いるので統一したいと思いました。
必要のないことなんですよね。

お礼日時:2006/05/27 03:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!