dポイントプレゼントキャンペーン実施中!

モジュールなどのロードを必要時だけにするため、useではなくrequireを使うことはよくあると思いますが、ワーニングをオンにしている場合、そのrequireしているパッケージの変数を参照している箇所で
Name "~" used only once: possible typo at~
という警告が出てしまいます。

たとえば、
require DBI;

my $dbh = DBI->connect(~) or die $DBI::errstr;
というコードだと$DBI::errstrについて警告されてしまいます。
もちろんuseなら警告は出ません。

この警告は、何とかならないものでしょうか。

A 回答 (2件)

>この箇所(or変数)だけ回避できる方法があれば



これで一箇所だけ回避できませんか
Perl Hacksあたりに
(そこではstrictの回避だった気がしますが)で
こんなのがあったと思います.
#動かしてないので駄目かもしれませんが,ご参考まで.

my $dbh;
{
no warnings 'once';
$dbh = DBI->connect(~) or die $DBI::errstr;
}
    • good
    • 0
この回答へのお礼

御指示通りで解決できました、ありがとうございます。

プラグマをブロックでスコープさせることができるということ自体を、知りませんでした・・・。お恥ずかしい限りで
よくみたらperllexwarnにもperlfaqにもしっかり書いてありましたね・・。

重ね重ね、ありがとうございました。

お礼日時:2007/05/07 15:34

no warning 'once';


でいきませんか?
perldoc perllexwarn でwarningの階層構造を参照してください.
もっとも・・・すなおに use するのが一番だと思いますが.

個人的には
use strict;
use warning 'FATAL';
くらいで通るように心がけたい.
    • good
    • 0
この回答へのお礼

早速ありがとうございます。
うーんやっぱりそうするしかないんですかね・・・
できれば、警告の機能自体は役立つので生かしておいて、この箇所(or変数)だけ回避できる方法があれば一番なんですが。
varsとかあるいは無意味に変数名だけを書いて2回参照するようにしたりしてるんですが、どうも良い方法とは思えなくて・・

お礼日時:2007/05/06 19:34

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