Leser: 35
Guest climberJa, so ist das beim Lernen. ;)ich bin gerade dabei mit Perl beizubringen u. hab auch schon ein konkretes Problem.
QuoteZeigt doch mal deinen Code, wie du es versuchst hast. Dann können wir dir ja sagen, was du falsch machst.Meine Idee war das ganze in einem Array abzuspeichern und über regex mit numerischen Rückverweisen richtig darzustellen. Leider haperts an der Umsetzung.
QuoteJa, machen wir doch.Wär klasse wenn mir da jemand helfen könnte.
1 2 3 4 5
# $D ist Tag, $M ist Monat, $Y ist Jahr my ($D, $M, $Y) = $string =~/^(\d\d?)\.(\d\d?)\.(\d{2,4})/; #passt auf 1.1.99 oder 01.01.99 oder 1.1.1999 if (not defined $D) { # dann vielleicht ein ISO-Datum? ($Y, $M, $D) = $string =~/^(\d{4})(\d{2})(\d{2})/; #passt auf 1.1.99 oder auch 01.01.99 }
1
2
3
4
5
6
7
8
9
10
Datei öffnen
Schleife
solange Zeile einlesen
Datum extrahieren
Datum in richtiges Format bringen
Datum in Array schieben
bis Dateiende
Datei schließen
Array sortieren
Array ausgeben
Quote, also Lernen + Lerneffekt.ich bin gerade dabei mit Perl beizubringen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl
$lies= "C:\\Batch\\Perl\\Werte.txt";
$schreib= "C:\\Batch\\Perl\\neu.txt";
open (DATEI, "< $lies")
or die "Fehler beim lesen von: $!";
while (<DATEI>)
{
chomp;
my ($D,$M,$Y) =~ /^(\d\d?)\.(\d\d?)\.(\d{2,4})/;
if (not defined $Y) {
($Y,$M,$D) =~ /^(\d{4})(\d{2})(\d{2})/;
}
push (@array, $D.$M.$Y);
}
open (REIN, "> $schreib")
or die "Fehler beim schreiben von: $!";
foreach (@array)
{
print REIN " $_ ";
}
2009-06-10T11:42:31 CrianZu Perl gehört aber auch das CPAN. Aber du hast Recht, vielleicht kann er mit modulen noch nichts anfangen.
2009-07-14T18:50:47 mikdoeHallo Klugscheißer!
perl -le '$str="20050423"; $str =~m /(\d{4})(\d{2})(\d{2})/; print $3,".",$2,".",$1'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#!/usr/bin/perl use strict; use warnings; my @data = (); open my $fh, '<', 'Datum.txt' || die $!; open my $fi, '>', 'Neu.txt' || die $!; while(my $line = <$fh>) { if($line =~ m/^[0-9]+$/) { ($line = $line) =~ s/(\d{4})(\d{2})(\d{2})/$3.$2.$1/; } push @data, $line; } print $fi @data; close $fh; close $fi;
$line =~ s/(\d{4})(\d{2})(\d{2})/$3.$2.$1/;
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
30
31
32
33
34
#!/usr/bin/perl
use warnings;
use strict;
# Without the brackets, too many functions would be exported
# into the main::-namespace:
use POSIX ();
# Print current time in central European format including seconds:
print POSIX::strftime("%H:%M:%S", localtime) . "\n";
# On Linux, you can read more about format-strings like "%H:%M:%S"
# by executing the shell-command "info date".
# Print today's date in central European format; the numbers of days and months
# below 10 are zero-padded (like in 09.08.2007):
print POSIX::strftime("%d.%m.%Y", localtime) . "\n";
# Print seconds since epoch (on Linux, epoch is 1.1.1970):
print time . "\n";
# Generate a time-list from seconds since epoch and print it:
my @tml = localtime;
print join(", ", @tml) . "\n";
# Print today's date in central European format using the time-list generated above;
# the numbers of days and months below 10 are blank-padded (like in 9.8.2007):
print $tml[3] . "." . ($tml[4] + 1) . "." . ($tml[5] + 1900) . "\n";
# Convert the time-tuple back to seconds since epoch:
print POSIX::mktime(@tml) . "\n";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/perl
use warnings;
$lies= "C:\\Batch\\Perl\\Werte.txt";
$schreib= "C:\\Batch\\Perl\\neu.txt";
open ($DATEI, "< $lies") || die $!;
open ($REIN, "> $schreib") || die $!;
while (my $string = <DATEI>) {
my ($D,$M,$Y)= $string =~ /^(\d\d?)\.(\d\d?)\.(\d{2,4})/;
if (not defined $Y)
{
($Y,$M,$D)= $string =~ /^(\d{4})(\d{2})(\d{2})/;
}
$anordnen = ($D.".".$M.".".$Y);
print "$anordnen\n";
push @array, $anordnen;
}
print $REIN @array;
close $DATEI;
close $REIN;
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
#!/usr/bin/perl use strict; use warnings; my $lies = "C:\\Batch\\Perl\\Werte.txt"; my $schreib = "C:\\Batch\\Perl\\neu.txt"; open my $DATEI, "<", $lies or die "$lies: $!"; open my $REIN, ">", $schreib or die "$schreib: $!"; while (my $string = <$DATEI>) { my ($D,$M,$Y)= $string =~ /^(\d\d?)\.(\d\d?)\.(\d{2,4})/; if (not defined $Y) { ($Y,$M,$D)= $string =~ /^(\d{4})(\d{2})(\d{2})/; } $anordnen = sprintf "%d.%d.%d", $D, $M, $Y; print "$anordnen\n"; push @array, $anordnen; } print $REIN @array or die "print failed: $!"; close $DATEI; close $REIN or die "$schreib: $!";
2009-07-13T11:19:22 LinuxerWenn Du nun noch "strict" verwenden würdest,
2009-07-13T11:23:07 pq2009-07-13T11:19:22 LinuxerWenn Du nun noch "strict" verwenden würdest,
tja, offensichtlich wurde mein posting komplett ignoriert, in welchem ich auf strict hinwies.
ist die frage, ob es sinnvoll ist, überhaupt noch antworten zu geben, wenn man nicht mal ne rückmeldung kriegt.
2009-07-14T11:55:40 mikdoeFragesteller sagt von Anfang an, dass er nicht die geringste Ahnung hat. Und jetzt schau Dir mal Dein Post dazu an, wo Du darauf hingewiesen hast. Hättest Du das verstanden, als Du mit Perl begonnen hast?
QuoteIch find das nicht in Ordnung, wie man hier selbst blutigen Anfängern die Fachbegriffe um die Ohren wirft und wie selbstverständlich davon ausgeht, dass das auch alles auf Anhieb verstanden wird.
QuoteEs hat sich noch keiner die Mühe gemacht, mal zu erklären, was überhaupt ein Filehandel ist
Quotewofür strict und warnings überhaupt sind usw.
2009-07-14T18:59:18 mikdoeDanke für einen erneuten Link und die fehlende Erklärung.
Wieviele Punkte bekommt man hier für das Posten von Links?
2009-07-14T18:59:18 mikdoeWieviele Punkte bekommt man hier für das Posten von Links?