Perl Wykonanie skryptu Problem

0

Witam.
Mam problem. Chcę wykonać skrypt i mam błąd:

backup:~# perl -w backup
\1 better written as $1 at backup line 148.
\2 better written as $2 at backup line 148.
Use of implicit split to @_ is deprecated at backup line 261.
\1 better written as $1 at backup line 315.
\2 better written as $2 at backup line 315.
\3 better written as $3 at backup line 315.
Use of implicit split to @_ is deprecated at backup line 313.
\1 better written as $1 at backup line 406.
\2 better written as $2 at backup line 406.
"my" variable $now masks earlier declaration in same scope at backup line 617.
Use of uninitialized value $cmd in string eq at backup line 639.
Use of uninitialized value $cmd in printf at backup line 30.
Loading config from: backup/backup_cfg for
Undefined subroutine &main::config called at backup line 32.

Co może być nie tak?

1

Domyślam się że skrypt który chcesz uruchomić na błędy.

0

Skrypt.

0
Shalom napisał(a):

Domyślam się że skrypt który chcesz uruchomić na błędy.

ale właśnie co to za błędy.
Kolega u siebie uruchamiał i mówił, że wszystko działa.
Może brakuję jakiś bibliotek do perla hmm. Sam nie wiem.

0

literówka w 99 linijce

0

Program ma:

0

Program ma:

backup:/usr/local/sbin# perl backup
Loading config from: backup/backup_cfg for
Undefined subroutine &main::config called at backup line 33.

33 linijka to:

%tmp = &config;

Może w nowszej wersji perla to się innaczej jakoś piszę, co w tej linijce.

0
#!/usr/bin/perl
#-----------------------------------------------------------------------
#-----------------------------------------------------------------------
use strict;
use Digest::MD5;

my $script_name = $0;           # nazwa skryptu
                                # lista polece� wywo�ywanych przez skrypt
my @commands    = ("uname", "df", "dd", "find", "cpio", "gzip",
                        "ssh", "su", "touch");
my %cfg;                        # konfiguracja
my $now;                        # aktualna data i czas (mies.=1..12)

#-----------------------------------------------------------------------
# Wczytanie pliku konfiguracyjnego
#-----------------------------------------------------------------------
sub load_config
{
my ($file, $cmd)      = @_;
my %cfg;
my %tmp;
my $name;

if ($file !~ /\//)
  {
  $name         = $script_name;
  $name         =~ s/\/[^\/]*$//;
  $file         = $name . "/" . $file;
  }
printf( STDERR "Loading config from: %s for %s\n", $file, $cmd );
do $file;
%tmp    = &config;

$cfg{cfg_file}  = $file;

$cfg{loc_prog}  = $script_name;

$cfg{rem_prog}  = "/usr/local/sbin/backup";

foreach $name (@commands)
  {
  $cfg{$name}   = "/usr/bin/" . $name           if (-x "/usr/bin/".$name);
  $cfg{$name}   = "/bin/" . $name               if (-x "/bin/".$name);
  $cfg{$name}   = "/usr/local/bin/" . $name     if (-x "/usr/local/bin/".$name);
  }

$cfg{host}      = `$cfg{uname} -n`;
chomp($cfg{host});

$cfg{system}    = `$cfg{uname} -s`;
chomp($cfg{system});

$cfg{root}      = "root";

foreach $name (keys %tmp)
  {
  $cfg{$name}   = $tmp{$name};
  }

return %cfg;
}

Co może być nie tak, że mam:

backup:~# perl backup.pl
Loading config from: backup.pl/backup.pl_cfg for
Undefined subroutine &main::config called at backup.pl line 32.

0

backup:~# perl -w backup.pl
\1 better written as $1 at backup.pl line 162.
\2 better written as $2 at backup.pl line 162.
Use of implicit split to @_ is deprecated at backup.pl line 275.
\1 better written as $1 at backup.pl line 329.
\2 better written as $2 at backup.pl line 329.
\3 better written as $3 at backup.pl line 329.
Use of implicit split to @_ is deprecated at backup.pl line 327.
\1 better written as $1 at backup.pl line 420.
\2 better written as $2 at backup.pl line 420.
"my" variable $now masks earlier declaration in same scope at backup.pl line 631.
Use of uninitialized value $cmd in string eq at backup.pl line 653.
Use of uninitialized value $cmd in printf at backup.pl line 30.
Loading config from: backup.pl/backup.pl_cfg for
Use of uninitialized value $cmd in string eq at backup.pl line 660.
Use of uninitialized value $skip in split at backup.pl line 439.
Use of uninitialized value $cmd in string eq at backup.pl line 667.
Use of uninitialized value $cmd in string eq at backup.pl line 680.
Use of uninitialized value $cmd in string eq at backup.pl line 694.
Use of uninitialized value $cmd in string eq at backup.pl line 706.
Use of uninitialized value $cmd in string eq at backup.pl line 714.
Use of uninitialized value $cmd in string eq at backup.pl line 722.
Use of uninitialized value $cmd in string eq at backup.pl line 728.
Use of uninitialized value $cmd in string eq at backup.pl line 736.
Use of uninitialized value $cmd in string eq at backup.pl line 744.
Use of uninitialized value $cmd in string eq at backup.pl line 750.
Use of uninitialized value $cmd in concatenation (.) or string at backup.pl line 759.
ERROR Unknown command:

Tak teraz.

0

Domyślam się, że to nie jest cały skrypt? Nie znam perla (nooo, podstawy podstaw) ale na podstawie;) komunikatów o błędach powinieneś sam mniej-więcej wiedzieć,gdzie błędu szukać: "Use of uninitialized value $cmd in string eq at backup.pl line 728." -> w linii 728 Twojego skryptu używasz gdzieś niezainicjalizowanej zmiennej, przed jej inicjalizacją. Resztę pomyśl sam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1