Strona 1 z 1

[SOLVED]Perl, split i podstawienie do tablicy wewnątrz pętli while.

: 05 gru 2008, 15:03
autor: knr
Witam!
Możliwe że to błahostka (nie jestem najbieglejszy w Perlu) ale nie mogę znaleźć rozwiązania i doprowadza mnie to już do szału.
Dlaczego to działa:

Kod: Zaznacz cały

#!/usr/bin/perl
use File::Tail;
$name = "/var/log/syslog";
my $ref = tie *FH,"File::Tail",(name=>$name, maxinterval=>3, adjustafter=>3);
while (<FH>) {	
	@tabela = split(/\|/, $_);
	print "@tabela";
}
a to już nie:

Kod: Zaznacz cały

#!/usr/bin/perl
use File::Tail;
$name = "/var/log/syslog";
my $ref = tie *FH,"File::Tail",(name=>$name, maxinterval=>3, adjustafter=>3);
while (<FH>) {	
	@tabela = split(/\|/, $_);
	print "$tabela[0]";
}
? :wall:
Jak bym nie próbował to nie mogę wewnątrz pętli przypisać rozdzielonych jakimś znakiem wpisów z Tail'a do tabeli.

Próbowałem też z innym przykładem opisywanym w man'ie File::Tail :

Kod: Zaznacz cały

use File::Tail;
  $file=File::Tail->new(name=>$name, maxinterval=>3, adjustafter=>3);
  while (defined($line=$file->read)) {
	@tabela = split(/\|/, $line);
	print "$tabela[0]";
}
ale efekt jest identyczny. :evil:

Próbowałem też troszkę inaczej:

Kod: Zaznacz cały

#use File::Tail;
$name = "/var/log/syslog";
my $ref = tie *FH,"File::Tail",(name=>$name, maxinterval=>3, adjustafter=>3);
while (my $zmienna = <FH>) {	
	@tabela = split(/\|/, $zmienna);
	print "$tabela[0]";
}
Niestety również bez zmian w tym przykładzie jak i wielu innych jeszcze jakie próbowałem.

Potrzebuje te dane pobrane i podzielone w array'u wsadzić do mysql'a i niestety utkwiłem w tym miejscu.

Bardzo proszę o pomoc :-?
Pozdrawiam.

/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\

EDIT:
Taka wersja działa:

#!/usr/bin/perl
use File::Tail;
$name = "/var/log/syslog";
$file=File::Tail->new(name=>$plik, maxinterval=>3, adjustafter=>3);
while (defined($line=$file->read)) {
@tabela = split(/\ /, $line);
print "$tabela[0]\n";
}


:oops:

Pozdrawiam!