2

Solaris 10 を使用しています。Perl プログラムを実行しようとしています。

2 つの perl バージョンがインストールされています。

/usr/bin/perlバージョン 5.8.4 の

/usr/local/bin/perlバージョン 5.12.3 の

DBI パッケージをインストールしました (ここにインストールされています)。/usr/perl5/site_perl/5.8.4/sun4-solaris-64int/auto/DBI/.packlist別のバージョンで Perl プログラムを実行すると問題が発生しますperl(ubuntu では正常に動作します)。

bash-3.00# perl temp.pl
@INC で Time/Piece.pm が見つかりません (@INC には次が含まれます: /usr/perl5/5.8.4/lib/sun4-   
solaris-64int /usr/perl5/5.8.4/lib /usr/perl5/site_perl/5.8.4/sun4-solaris-64int
/usr/perl5/site_perl/5.8.4 /usr/perl5/site_perl /usr/perl5/vendor_perl/5.8.4/sun4-
solaris-64int /usr/perl5/vendor_perl/5.8.4 /usr/perl5/vendor_perl .) で    
temp.pl 4 行目。
BEGIN が失敗しました -- temp.pl 行 4 でコンパイルが中止されました。

bash-3.00# /usr/local/bin/perl temp.pl
@INC で DBI.pm が見つかりません (@INC には次が含まれます: /usr/local/lib/perl5/site_perl/5.12.3
/sun4-solaris /usr/local/lib/perl5/site_perl/5.12.3 /usr/local/lib/perl5/5.12.3/sun4-
solaris /usr/local/lib/perl5/5.12.3 /usr/local/lib/perl5/site_perl .) temp.pl の 5 行目。
BEGIN が失敗しました -- temp.pl 行 5 でコンパイルが中止されました。

私は非常に多くの方法を試しましたが、solaris で Perl プログラムを実行する方法がわかりません。誰でも助けてください。

以下は私のプログラムです。実際、@Borodin によって再定義されました。彼に感謝します。

use strict;
use warnings;

use Time::Piece;
use DBI;

open my $log, '<', '/opt/testlogs/test.log' or die "Unable to open log file: $!";

my ( $count_start, $count_interim, $count_stop ) = ( 0, 0, 0 );

while (<$log>) {

    if (/server start/) {
        $count_start++;
    }
    elsif (/server interim-update/) {
        $count_interim++;
    }
    elsif (/server stop/) {
        $count_stop++;
    }
}

print <<END;
Start:   $count_start
Interim: $count_interim
Stop:    $count_stop
END

print localtime->strftime("%b %e %H:%M:%S"), "\n";

my $dbh = DBI->connect( "DBI:Pg:dbname=postgres;host=localhost", "postgres", "postgres", { 'RaiseError' => 1 } );

my $rows = $dbh->do(
    "insert into radius (server_start, server_stop, server_interim)
       Values ($count_start, $count_stop, $count_interim)"
);

printf "%d %s affected\n", $rows, $rows == 1 ? 'row' : 'rows';
4

1 に答える 1

7

/usr/bin/perl には Time::Piece がインストールされていないので、インストールしてください。

/usr/bin/perl -MCPAN -e install Time::Piece

/usr/local/bin/perl に DBI がインストールされていないので、インストールします。

/usr/local/bin/perl -MCPAN -e install DBI
于 2012-07-19T15:43:43.553 に答える