1 (25.11.2011 22:10:16 отредактировано Dvalin)

день добрый!
имеется странная проблема с небольшим перловым скриптом, крайне надеюсь на помощь..

итак, есть достаточно объемный грепнутый вывод с цисок следующего вида

$ cat data
AGG22;sh inve
AGG22;NAME: "CISCO7606-S", DESCR: "Cisco Systems Cisco 7600 6-slot Chassis System"
AGG22;CISCO7606-S;SN FOX
AGG22;
AGG22;NAME: "CLK-7600 1", DESCR: "OSR-7600 Clock FRU 1"
AGG22;CLK-7600;SN NWG
AGG22;
AGG22;NAME: "CLK-7600 2", DESCR: "OSR-7600 Clock FRU 2"
AGG22;CLK-7600;SN NWG
AGG22;

кат скрипта:

$ cat translate.pl 
#!/usr/bin/perl 
use strict;
use warnings;

my $crap;
my $descr;
my $result;

while ( my $line = <STDIN> ) 
{ 
chomp ($line);
if ( $line =~ /;\n/ )
{next;}
if ( $line =~ / inve/ )
{next;}
chomp ($line);

print "new iteration\n";
print "$line\n";
if ( $line =~ /.*DESCR.*/)
    {
    print "descr line found!\n";
    ($crap, $descr) = split (/DESCR: /, $line);
    print "$descr\n";
    next;
    }
if ($line =~ /.*SN.*/){
print "SN line found!!!!\n";
print "$line"."$descr"."\n";
}
}

и получаемый вывод:

$ perl translate.pl < data
"Cisco Systems Cisco 7600 6-slot Chassis System"
"OSR-7600 Clock FRU 1"LK-7600;SN NWG
"OSR-7600 Clock FRU 2"LK-7600;SN NWG

предполагается, что скрипт должен взять содержимое строки n-1 после ключевого слова "DESCR: " и вписать его в конец строки n .. но блин, такое ощущение, что содержимое записывается с начала строки, хотя стоит оператор ".".. да и без него тоже самое..

вывод с дебаговыми принтами:

$ perl translate.pl < data

new iteration
AGG22;NAME: "CISCO7606-S", DESCR: "Cisco Systems Cisco 7600 6-slot Chassis System"
descr line found!
"Cisco Systems Cisco 7600 6-slot Chassis System"
new iteration
AGG22;CISCO7606-S;SN FOX
SN line found!!!!
"Cisco Systems Cisco 7600 6-slot Chassis System"
new iteration
AGG22;
new iteration
AGG22;NAME: "CLK-7600 1", DESCR: "OSR-7600 Clock FRU 1"
descr line found!
"OSR-7600 Clock FRU 1"
new iteration
AGG22;CLK-7600;SN NWG
SN line found!!!!
"OSR-7600 Clock FRU 1"LK-7600;SN NWG
new iteration
AGG22;
new iteration
AGG22;NAME: "CLK-7600 2", DESCR: "OSR-7600 Clock FRU 2"
descr line found!
"OSR-7600 Clock FRU 2"
new iteration
AGG22;CLK-7600;SN NWG
SN line found!!!!
"OSR-7600 Clock FRU 2"LK-7600;SN NWG
new iteration
AGG22;

центос крутится под виртуалкой, думаю, не в этом ли проблема...
спасибо заранее, очень надеюсь на помощь..