1 2 3 4
use DateTime; my ($epoch1, $epoch2) = (split ' ', $line)[17,18]; my $date1 = DateTime->from_epoch( epoch => $epoch1 ); ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl -w #ohne das -w gibt es mir nen Fehler aus
use strict;
use warnings;
open (IN, "<h.txt") || die "Die Datei wurde nicht gefunden\n";
while (<IN>)
{
print $_ if $. == 5;
if ($. == %)
{
use DateTime;
my ($epoch1, $epoch2) = (split ' ', $line)[18,19];
my $date1 = DateTime->from_epoch( epoch => $epoch1 );
}
}
close (IN);
2012-03-28T10:20:37 Catherinakommt ein fehler, da die Maschine eine Sekundenangabe nicht als Zeit erkennt, da sie auch gar nicht weiß an welchem Datum diese Sekunden zählen.
QuoteCan't locate DateTime.pm in @INC (@INC contains: /opt/perl_32/lib/5.8.8/PA-RISC1.1-thread-multi /opt/perl_32/lib/5.8.8 /opt/perl_32/lib/site_perl/5.8.8/PA-RISC1.1-thread-multi /opt/perl_32/lib/site_perl/5.8.8 /opt/perl_32/lib/site_perl /opt/perl_32/lib/vendor_perl/5.8.8/PA-RISC1.1-thread-multi /opt/perl_32/lib/vendor_perl/5.8.8 /opt/perl_32/lib/vendor_perl .) at ./funktionierenderVersuchTeil2.pl line 13
BEGIN failed--compilation aborted at ./funktionierenderVersuchTeil2.pl line 13.
Quotewie ich es umwandle, das weiß ich.
2012-03-28T10:20:37 CatherinaLies bitte mal ModuleWieInstalliereIchEinModul installiere bitte erst mal das Modul DateTime.Can't locate DateTime.pm in @INC (@INC contains: /opt/perl_32/lib/5.8.8/PA-RISC1.1-thread-multi /opt/perl_32/lib/5.8.8 /opt/perl_32/lib/site_perl/5.8.8/PA-RISC1.1-thread-multi /opt/perl_32/lib/site_perl/5.8.8 /opt/perl_32/lib/site_perl /opt/perl_32/lib/vendor_perl/5.8.8/PA-RISC1.1-thread-multi /opt/perl_32/lib/vendor_perl/5.8.8 /opt/perl_32/lib/vendor_perl .) at ./funktionierenderVersuchTeil2.pl line 13
BEGIN failed--compilation aborted at ./funktionierenderVersuchTeil2.pl line 13.
2012-03-28T09:47:21 pqdu solltest dir ein paar tutorials zu gemüte führen. du solltest zumindest in der lage sein, einen beispielschnipsel auf dein script anzupassen, aber ich habe leider das gefühl, du verstehst fast gar nichts von deinem script.
2012-03-28T09:11:19 CatherinaCode: (dl )open (IN, "<h.txt") || die "Die Datei wurde nicht gefunden\n";
2012-03-26T09:01:19 pq... keine lexikalische filehandles, in der fehlermeldung bei open fehlt die eigentliche fehlermeldung.
2012-03-28T09:11:19 CatherinaCode: (dl )#!/usr/bin/perl -w #ohne das -w gibt es mir nen Fehler aus
2012-03-28T09:00:31 CatherinaHey Leute,
wie kann ich hier:
====> 5d2a6f8c-0c97-71e1-1d93-0acece150000 e45aaba0-098f-71da-0bcb-0acece140000 1 -1038486904 18 scholl.btx.dtag.de 1 -1038486904 18 scholl.btx.dtag.de 1 0 4 0 0 0 1321038004 1321038004 0 4 12 0 0 0 0 0 12 0 0 0 0 0 1321038004 3 OpC 24 Syslog (10.x/11.x HP-UX) 13 gethostbyaddr 2 OS 0 0 0 0 56 gethostbyaddr: f-sb1-i.F.DE.NET.DTAG.DE. != 62.154.3.85 87 Nov 11 19:58:38 scholl syslog: gethostbyaddr: f-sb1-i.F.DE.NET.DTAG.DE. != 62.154.3.85 0 0 0 0 0 0 0 0 0 0 0 0 5d2a6f8c-0c97-71e1-1d93-0acece150000 -3600 0 0 0 48 AUTOKEY:e4472fea6acec54ac834cd96a1107b1eacc5e5cf 0 1321038004 1 CMA 14 condition_name 22 gethostbyaddr messages
nur die roten Zeichenketten ausgeben? Die Beiden sollten getrennt sein und so ausgegeben werden, dass ich diese umformen kann in ein Datum. Das ganze sollte in Perl funktionieren.
Liebe Grüße
Catherina
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
use strict; use warnings; # Daten"zeile" my $zeile = '====> 5d2a6f8c-0c97-71e1-1d93-0acece150000 e45aaba0-098f-71da-0bcb-0acece140000 1 -1038486904 18 scholl.btx.dtag.de 1 -1038486904 18 scholl.btx.dtag.de 1 0 4 0 0 0 1321038004 1321038004 0 4 12 0 0 0 0 0 12 0 0 0 0 0 1321038004 3 OpC 24 Syslog (10.x/11.x HP-UX) 13 gethostbyaddr 2 OS 0 0 0 0 56 gethostbyaddr: f-sb1-i.F.DE.NET.DTAG.DE. != 62.154.3.85 87 Nov 11 19:58:38 scholl syslog: gethostbyaddr: f-sb1-i.F.DE.NET.DTAG.DE. != 62.154.3.85 0 0 0 0 0 0 0 0 0 0 0 0 5d2a6f8c-0c97-71e1-1d93-0acece150000 -3600 0 0 0 48 AUTOKEY:e4472fea6acec54ac834cd96a1107b1eacc5e5cf 0 1321038004 1 CMA 14 condition_name 22 gethostbyaddr messages'; # Daten nach Leerzeichen aufsplitten und an Array zuweisen my @data = split /\s/,$zeile; # Nur die 18. und 19. "Datenfeld" aus dem Datenarray holen my ($zeitstempel1, $zeitstempel2) = @data[17,18]; # Zum Debug die beiden Daten ausgeben print "T1: $zeitstempel1", "\n", "T2: $zeitstempel2", "\n"; # Zum Debug die beiden Daten im GMT Zeitformat ausgeben print "T1: " . localtime($zeitstempel1), "\nT2: " . localtime $zeitstempel2, "\n";
2012-03-29T09:24:44 pqund warum versuchst du es dann nicht mit dem split?
oder bist du jetzt so beleidigt, dass du meinen code gar nicht mehr ausprobieren willst?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
# Dateiname my $filename = "/home/catherina/logfile.log"; #Datei zum lesen öffnen open(my $fh, "<", $filename) or die "Open schlug fehl: $!"; # Alle Daten in Array einlesen my @logdaten = <$fh>; #Datei schließen close ($fh); # jede "Zeile" aus Logdaten auswerten for my $zeile (@logdaten) { # Daten nach Leerzeichen aufsplitten und an Array zuweisen my @data = split /\s/,$zeile; # Nur die 18. und 19. "Datenfeld" aus dem Datenarray holen my ($zeitstempel1, $zeitstempel2) = @data[17,18]; # Zum Debug die beiden Daten ausgeben print STDERR "T1: $zeitstempel1", "\n", "T2: $zeitstempel2", "\n"; # Zum Debug die beiden Daten im GMT Zeitformat ausgeben print STDERR "T1: " . localtime($zeitstempel1), "\nT2: " . localtime $zeitstempel2, "\n"; # weiterer Code, der irgendwas mit den extrahierten Zeitstempeln macht }