Bedingung if (substr...) macht Probleme

22/01/2009 - 21:25 von Richard Müller | Report spam
Guten Tag,
weil ich aus einer Kalender-Datei etwas herausfiltern möchte, wollte ich mir
ein Perl-Skript dazu bauen (ich mühe mich durch alle Tutorials, denn mit
Perl hatte ich bisher nicht viel zu tun).
Bisher sieht's so aus:
#!/usr/bin/perl
use strict;
open(LESEN, "/home/richard/temp/test.ics")
or die "Fehler bei 'test.ics': $!";
open(SCHREIBEN, "> /home/richard/temp/neu.txt")
or die "Fehler bei 'neu.txt': $!";

while(defined(my $i = <LESEN>)) {
if (substr($i,0,11) = "DESCRIPTION:") { print SCHREIBEN substr($i,12) }
}

close(LESEN);
close(SCHREIBEN)
or die "Fehler Schließen 'neu.txt': $! "
-
test.ics ist eine Kalender-Datei, die zeilenweise Eintràge enthàlt, die mit
verschiedenen Deskriptoren anfangen. Einer davon Ist "DESCRIPTION:"
Ich wollte alles aus jeder Zeile, die mit DESCRIPTION: anfàngt, (außer dem
Wort DESCRIPTION: selbst) zeilenweise in die neue Datei neu.txt schreiben.

Was passiert? Es wird aus _jeder_ Zeile alles ab dem 13. (oder 12., wenn man
das 1. Zeichen als 0 zàhlt) Zeichen in die Datei geschrieben, ganz egal,
wie die Zeichen 0 bis 11 lauten, d.h. die if-Abfrage tut's nicht.
ich bin ziemlich ratlos... Irgendwo sitzt bestimmt ein prinzipieller
Fehler, den ich nicht finde. Kann mir einer bitte helfen?
Danke, Richard

Richard Müller - r-dot-mueller-at-oeko-sorpe-dot-de
 

Lesen sie die antworten

#1 k
22/01/2009 - 21:41 | Warnen spam
Richard Müller writes:

Guten Tag,
weil ich aus einer Kalender-Datei etwas herausfiltern möchte, wollte ich mir
ein Perl-Skript dazu bauen (ich mühe mich durch alle Tutorials, denn mit
Perl hatte ich bisher nicht viel zu tun).
Bisher sieht's so aus:
#!/usr/bin/perl
use strict;
open(LESEN, "/home/richard/temp/test.ics")
or die "Fehler bei 'test.ics': $!";
open(SCHREIBEN, "> /home/richard/temp/neu.txt")
or die "Fehler bei 'neu.txt': $!";

while(defined(my $i = <LESEN>)) {
if (substr($i,0,11) = "DESCRIPTION:") { print SCHREIBEN substr($i,12) }


^^
}

close(LESEN);
close(SCHREIBEN)
or die "Fehler Schließen 'neu.txt': $! "
-
test.ics ist eine Kalender-Datei, die zeilenweise Eintràge enthàlt, die mit
verschiedenen Deskriptoren anfangen. Einer davon Ist "DESCRIPTION:"
Ich wollte alles aus jeder Zeile, die mit DESCRIPTION: anfàngt, (außer dem
Wort DESCRIPTION: selbst) zeilenweise in die neue Datei neu.txt schreiben.

Was passiert? Es wird aus _jeder_ Zeile alles ab dem 13. (oder 12., wenn man
das 1. Zeichen als 0 zàhlt) Zeichen in die Datei geschrieben, ganz egal,
wie die Zeichen 0 bis 11 lauten, d.h. die if-Abfrage tut's nicht.
ich bin ziemlich ratlos... Irgendwo sitzt bestimmt ein prinzipieller
Fehler, den ich nicht finde. Kann mir einer bitte helfen?



Ich habe den Fehler mal unterstrichen. (zu deinem Perl Stil schreibe ich
jetzt nichts, aber er ist nicht unbedingt das, was man idiomatisch
nennen würde). Neben dem use strict macht sich ein use warnings immer
gut.


Gruß
KP

Ähnliche fragen