zrobilem tak, zapewne powinienem wywalic z petli format i te inne rzeczy, tak?
Kod:
#!/usr/bin/perl
use strict;
use warnings;
my %dodatki = ('C' => 'CUSTOMER', 'S' => 'SUPPLIER', 'F' => 'FEATURE');
# Opening files
open LOGFILE, "<",'dbtsp12A.log' or die "Cannot open LOG file $!";
open AXEPARAM, ">",'dbtsp12Anew.txt' or die "Cannot open output file $!";
# Starting extraction
print "Extracting script..\n";
print AXEPARAM "Name Setname Class\n";
while (chomp(my $linia = <LOGFILE>)) {
if ($linia =~ /OWNS\s+(\S+)\s+(\S+)/) { # dopasowujemy OWNS <cos> <cos>
my ($name, $setname) = ($1, $2); # dopasowane elementy sa w $1 i $2
$setname =~ /(.)$/; # sprawdzamy jaka jest ostatnia litera $setname
format wyjscie = # ustalamy format danych w pliku wyjsciowym
@<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<< @<<<<<<<<<<
$name, $setname, $dodatki{$1}
.
select (AXEPARAM);
$~ = 'wyjscie';
write AXEPARAM;
}
}
print "Extracting done.\n";
# Closing files
close (LOGFILE);
close (AXEPARAM);
teraz dziala super tylko jest problem z ostatnia linia pliku, skrypt nie konczy dzialania wypisujac:Extracting done tylko wywala uninitialized value in chomp at moj.pl line 16, <LOGFILE> line 121629. (to jest ostatnia linia mojego pliku) wywala pewnie dlatego ze jest pusta.
biore sie za sortowanie ale przyznam ze nie mam pomyslu, moze dlatego ze prawie nic nie wiem o haszach, jesli masz jakies wskazowki bede wdzieczny