当前位置: 动力学知识库 > 问答 > 编程问答 >

osx - tsung_stats.pl on Mac OS X Mavericks run into "Can't locate Template.pm" error

问题描述:

I'm trying to run tsung_stats.pl from tsung (installed through brew) on Mac OS X 10.9 and got error:

Can't locate Template.pm in @INC (@INC contains:

/Library/Perl/5.16/darwin-thread-multi-2level /Library/Perl/5.16

/Network/Library/Perl/5.16/darwin-thread-multi-2level

/Network/Library/Perl/5.16 /Library/Perl/Updates/5.16.2

/System/Library/Perl/5.16/darwin-thread-multi-2level

/System/Library/Perl/5.16

/System/Library/Perl/Extras/5.16/darwin-thread-multi-2level

/System/Library/Perl/Extras/5.16 .) at tsung_stats.pl line 564

I searched and it seems I have to install perl templates, so I ran "sudo cpan Template" and yet still get the same error.

cpan and perl are all in /usr/bin/. Tsung is in /usr/local/Cellar/tsung/1.5.0/bin/tsung

Versions are:

perl: perl 5, version 16, subversion 2 (v5.16.2)

cpan: 1.57

tsung: 1.5.0

I searched my system and found no file name Template.pm. The closest I found was two TextTemplate.pm files in

/System/Library/Perl/Extras/5.16/Locale/Maketext/Extract/Plugin/

/System/Library/Perl/Extras/5.12/Locale/Maketext/Extract/Plugin/

The following code snippet in question starts from line 563:

sub html_report {

require Template;

my $titre = 'Tsung ';

my $version = $tagvsn;

my $contact = '[email protected]';

my $output = 'index.html';

my $tt = Template->new({

INCLUDE_PATH => $template_dir,

PRE_CHOMP => 1,

INTERPOLATE => 1,

}) or die "Template error " . Template->error();

my $xml_conf;

opendir (DIR, ".") or warn "can't open directory .";

while (my $file = readdir (DIR) ) {

if ($file =~ /.xml$/) {

$xml_conf= $file;

}

}

foreach my $type ("mean", "maxmean", "minmean") {

foreach my $data (keys % {$maxval->{$type}} ) {

next if ($data =~ m/^size/);

if ($data =~ m/os_mon/) {

$maxval->{$type}->{$data} = sprintf "%.2f",$maxval->{$type}->{$data};

next;

}

next if not ($data eq "session" or $data eq "connect" or $data eq "request" or $data eq "page" or $data =~ m/^tr_/);

$maxval->{$type}->{$data} = &formattime($maxval->{$type}->{$data});

}

}

foreach my $size ("size_rcv", "size_sent") {

if ($maxval->{rate}->{$size}) {

$maxval->{rate}->{$size} = &formatsize($maxval->{rate}->{$size}*8,"bits");

$maxval->{maxmean}->{$size} = &formatsize($maxval->{maxmean}->{$size},"B");

} else {

warn "$size is equal to 0 !\n";

}

}

my $vars =

{

version => $version,

os_mon => $extra,

errors => $errors,

title => $titre,

subtitle => "Stats Report",

http => $http,

stats_subtitle => "Stats Report ",

graph_subtitle => "Graphs Report ",

contact => $contact,

data => $maxval,

cat_data => $category,

conf => $xml_conf

};

$tt->process("report.thtml", $vars, "report.html") or die $tt->error(), "\n";

$vars =

{

version => $version,

os_mon => $extra,

errors => $errors,

http => $http,

match => $match,

async => $async,

bosh => $bosh,

title => $titre,

subtitle => "Graphs Report",

stats_subtitle => "Stats Report ",

graph_subtitle => "Graphs Report ",

os_mon_other=> $os_mon_other,

contact => $contact,

conf => $xml_conf,

ext => $imgfmt

};

if (not $dygraph) {

$tt->process("graph.thtml", $vars, "graph.html") or die $tt->error(), "\n";

} else {

$tt->process("graph_dy.thtml", $vars, "graph.html") or die $tt->error(), "\n";

copy (($template_dir . "/dygraph-combined.js"), ".") or die "copy failed : $!";

}

}

I believe $template_dir is in this piece of code (start from line 71):

my $prefix ="/usr/local/Cellar/tsung/1.5.0";

unless ($template_dir) {

if (-d (dirname($0) . "/templates/")) {

$template_dir = dirname($0)."/templates/";

} elsif (-d "$ENV{HOME}/.tsung/templates/") {

$template_dir = "$ENV{HOME}/.tsung/templates/";

} elsif (-d "${prefix}/share/tsung/templates") {

$template_dir = "${prefix}/share/tsung/templates";

} elsif (-d "/usr/share/tsung/templates") {

$template_dir = "/usr/share/tsung/templates";

} elsif (-d "/usr/local/share/tsung/templates") {

$template_dir = "/usr/local/share/tsung/templates";

} else {

warn "Can't find template directory !";

}

}

I checked those locations and found some .pm files, but none were Template.pm.

Any help would be appreciated.

网友答案:

As deduced in the comments:

You need to install Template::Toolkit.

网友答案:

just (on windows) run the following lines on cmd

cd C:\Perl64\bin
ppm install Template-Toolkit
分享给朋友:
您可能感兴趣的文章:
随机阅读: