Portál AbcLinuxu, 12. května 2025 08:52

Dotaz: mini script - error

23.5.2009 15:26 beginer666 | skóre: 9
mini script - error
Přečteno: 184×
Odpovědět | Admin

Zdravim všechny.

Potřeboval bych poradit/postrčit, kde mám chybičku v malém scriptíčku. ((: .... >.<

Tady je:

<PRE>

#!/usr/bin/perl
use strict;
use warnings;
use Net::CIDR::Lite;

my $ipv4String='[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}';

if(defined $ARGV[0] && $ARGV[0] eq '-h'){
print "usage: $0

This script summarizes your IP classes (if possible). Input IPs with mask one per line. End with CTRL+D. Optionally,

redirect a file to stdin like so:
$0 < cidr =" Net::CIDR::Lite-">new;

while(<>){
if(/($ipv4String\/[0-9]{1,2})/){
my $item=$1;
$cidr->add($item);
}
else{
print "Ignoring previous line.\n";
}
}
my @cidr_list = $cidr->list;
print "======Aggregated IP list:======\n";
foreach my $item(@cidr_list){
print "$item\n";
}
 

 

Kdyz to spustim tak mi to píše tohle:

Bareword found where operator expected at ./summarisation.pl line 12, near "$0 < cidr =" Net::CIDR::Lite"
  (Might be a runaway multi-line "" string starting on line 9)
        (Missing operator before Net::CIDR::Lite?)
String found where operator expected at ./summarisation.pl line 24, near "print ""
  (Might be a runaway multi-line "" string starting on line 20)
        (Missing semicolon on previous line?)
String found where operator expected at ./summarisation.pl line 26, near "print ""
  (Might be a runaway multi-line "" string starting on line 24)
        (Missing semicolon on previous line?)
Backslash found where operator expected at ./summarisation.pl line 26, near "$item\"
        (Missing operator before \?)
String found where operator expected at ./summarisation.pl line 26, at end of line
        (Missing semicolon on previous line?)
syntax error at ./summarisation.pl line 12, near "$0 < cidr =" Net::CIDR::Lite"
Global symbol "$item" requires explicit package name at ./summarisation.pl line 26.
Can't find string terminator '"' anywhere before EOF at ./summarisation.pl line 26.
 

 </PRE>

Předem děkuji

 

 

 

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

23.5.2009 18:17 marbu | skóre: 31 | blog: hromada | Brno
Rozbalit Rozbalit vše Re: mini script - error
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nechápu, co má dělat tento rádek:
$0 < cidr =" Net::CIDR::Lite-">new;
Btw a taky nějak rozumě odsazovat není na škodu, pak se ti nemůže stát, že zapomeneš závorku.
There is no point in being so cool in a cold world.
23.5.2009 19:31 beginer666 | skóre: 9
Rozbalit Rozbalit vše Re: mini script - error

To má dělat to, že co vložíš z klávesnice po spustění scriptu přidá jako object new.

Podrobnosti zde: http://search.cpan.org/dist/Net-CIDR-Lite/Lite.pm

V perlu moc neumim, takže je možný že tam fakt někde chybí závorka či něco jinýho, akorát nejsem schopnej říct kde a co?

Takže jestli víš, budu rád když mi to prozradíš...

 

Díky

23.5.2009 20:06 marbu | skóre: 31 | blog: hromada | Brno
Rozbalit Rozbalit vše Re: mini script - error
No, ono totiž tak jak to tam máš nedává moc smysl. Jednak první if není imho ukončen správně, a pak u výpisu nápovědy bys měl ten řetězec nějak normálně ukončit a pak ten zbytek (my $cidr = Net::CIDR::Lite->new;) hodit na samostatnou řádku, takhle nemáš vůbec proměnou $cidr definovanou. Tím zrušíš ten řádek, na který jses se tě ptal. Dobré taky bývá po zobrazení nápovědy skript ukončit.
There is no point in being so cool in a cold world.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.