open-problemstellung
Markus Huszar
- perl
Hallo Leutz,
ich hab ein Problem. Und zwar habe ich eine Liste @eing, in der diverse Eingaben drinnen stehen. Diese werden im Laufe des Programmes abgefragt und darin gespeichert.
Am Ende will ich dann soviele Dateien erstellen wie es Einträge in der Liste gibt.
z.B:
...
@eing = ("001", "003", "test", "mag") # ev. mehr oder weniger, je nachdem
...
danach will ich die Dateien öffnen/erstellen - und hier hakt es:
foreach(@eing)
{
open($eing[$e], ">$ARGV[0].$eing[$e]");
$e++;
}
Ich hoffe ihr habt einigermaßen den Überblick und versteht was ich meine. Wie kann man das realisieren? Geht das so wie ich es gemacht habe?
MfG
Markus
Hallo,
danach will ich die Dateien öffnen/erstellen - und hier hakt es:
foreach(@eing)
{
open($eing[$e], ">$ARGV[0].$eing[$e]");
$e++;
}
Abgesehen davon, daß da noch ein 'close' fehlt, könnte ich nicht sagen, was nicht stimmt.
Was funktioniert also nicht? Ohne Fehlermeldung und genaue Fehlerbeschreibung ist das ganze nur Raterei, also z.B.
open($eing[$e], ">$ARGV[0].$eing[$e]") or die "Nix da mit aufmachen von $ARGV[0].$eing[$e] : $!\n";
wäre da sicherlich aufschlußreicher. Auch in welchem Umfeld das passiert könnte dazu beitragen, den Schleier zu lüften.
perldoc -f open
perdoc opentut
Hast Du sicherlich schon gelesen, oder?
Grüße
Klaus
Morgen Markus,
danach will ich die Dateien öffnen/erstellen - und hier hakt es:
foreach(@eing)
{
open($eing[$e], ">$ARGV[0].$eing[$e]");
$e++;
}
Vielleicht hab ich gerade nur die Falsche Denkrichtung eingeschlagen, die "Richtigen PERL-Experten" duerfen mich sehr gerne verbessern, aber wahre nicht:
open($eing[$e], ">$ARGV[0].$eing[$e]");
foreach(@eing)
{
$e++;
}
Eine bessere Loesung? Du oeffnest dann die Datei (oder was sonst) nur einmal und danach wird die Schleife ausgefuehrt und schreibt die Werte.
gruesse
jens mueller
Hi,
open($eing[$e], ">$ARGV[0].$eing[$e]");
foreach(@eing)
{
$e++;
}
Eine bessere Loesung? Du oeffnest dann die Datei (oder was sonst) nur einmal und danach wird die Schleife ausgefuehrt und schreibt die Werte.
Soweit ich das verstanden habe, will er aber für jedes Element im Array eine eigene Datei erstellen, nicht alle Werte in eine Datei schreiben.
Grüße,
Crunch
Hallo,
Hallo Leutz,
Bitte wer?
[... Liste mit Dateinamen ...]
danach will ich die Dateien öffnen/erstellen - und hier hakt es:
foreach(@eing)
{
open($eing[$e], ">$ARGV[0].$eing[$e]");
$e++;
}
Wozu ein $e, wenn du doch eh mit foreach arbeitest? Warum nicht einfach
so:
foreach(@eing)
{
local *DAT;
open(DAT, '>'.$ARGV[0].$_) or die $!; # nicht vergessen!
$_ = \*DAT;
}
Hierbei darfst du aber nicht vergessen, die Dateien wieder zu
schliessen, z. B. mit
foreach(@eing)
{
close $_ or die $!;
}
perldoc perlopentut, perldoc perldata und perldoc -f open helfen
btw. auch.
Gruss,
CK
Hoi,
foreach(@eing)
{
close $_ or die $!;
}
Es muss natuerlich
close *$_;
heissen.
Gruss,
CK
hi!
[...]
perldoc perlopentut, perldoc perldata und perldoc -f open helfen
btw. auch.
Was hälst du davon, den Leuten wenigstens ansatzweise zu erklären,
was du da eigentlich machst? Ich glaube nicht, dass Markus deinen
Code verstanden hat... ;))
bye, Frank!
Joho,
Was hälst du davon, den Leuten wenigstens ansatzweise zu erklären,
was du da eigentlich machst? Ich glaube nicht, dass Markus deinen
Code verstanden hat... ;))
Das mache ich, wenn ich merke, jemand hat die Dokumentation
gelesen. Ansonsten gibts nur einen Verweis auf die Stelle, wo man
es nachlesen kann.
Gruss,
CK