たとえば、こんな感じのcgiを計測しようと思った時に

 

#!/usr/bin/perl

use strict;
use warnings;
use Time::HiRes qw(usleep ualarm gettimeofday tv_interval);

my $a = 'あいうえお';
my $t = [gettimeofday];

if (!$a) {
    use Jcode;
}

jcode($a, 'utf8')->sjis;
print "Content-type:text/html\n\n";
print tv_interval($t);
print "\n";
exit;

 

と、

 

#!/usr/bin/perl

use strict;
use warnings;
use Time::HiRes qw(usleep ualarm gettimeofday tv_interval);

my $a = 'あいうえお';
my $t = [gettimeofday];

my $jcode;
# if (!$a) {
if ($a) {
    require "/usr/lib/perl5/site_perl/5.8.8/Jcode.pm";
    $jcode = Jcode->new();
}

$jcode->set($a, 'utf8')->sjis;
print "Content-type:text/html\n\n";
print tv_interval($t);
print "\n";
exit;

 

は、全く結果が違っちゃいます

 

見てお分かりの通り、前者は、

 

if (!$a) {
    use Jcode;
}

 

してるのに、jcode関数が使えちゃいます

 

use は、コンパイル

require は、実行時に展開されるために差分が出てしまうのです

 

つまり、あんま使わないから、if文の中でだけuseしとくか・・・・

 

なーんてことはできないので、そーいうときは、requireにしましょー

 

 

 

トラックバック(0)

このブログ記事を参照しているブログ一覧: perlのuseとrequireで、CGIの処理速度などを計測する場合

このブログ記事に対するトラックバックURL: http://modperlis.bounceme.net/mt/mt-tb.cgi/102

コメントする


画像の中に見える文字を入力してください。

Perl 勉強本

Oracle 勉強本

J2EE 勉強するなら、これしかなくね?

ブログ管理人

SE perler@29

アイテム

  • image001.gif
  • modperl.png

アドパートナー

tooland

Pingo!

boox