Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
PERL - ist $var leer?

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
perlies
Gast





BeitragVerfasst am: 16. Feb 2007 16:18   Titel: PERL - ist $var leer?

Hallo.

Ich habe hier ein kleines Übungsprogramm für Hashes.
Mein Problem ist folgende Fehlermeldung wenn ich es ausführe.
Als Variablen gebe ich testweise mal a und b ein.
Wenn ich nichts eingebe (mit STRG-D beende) habe ich keine Fehlermeldung.

Zitat:
Fehlermeldung

Use of uninitialized value in addition (+) at ./perltest.pl line 10, <STDIN> line 2.
Use of uninitialized value in addition (+) at ./perltest.pl line 10, <STDIN> line 2.
a wurde 1-mal eingegeben
b wurde 1-mal eingegeben


Code:
Quelltext

#!/usr/bin/perl

use warnings;

chomp(@woerter = <STDIN>); # Beenden mit STRG-D
foreach $wort (@woerter) {
if($wort) { # Hier will ich prüfen ob $wort leer ist, nur wie?
$zaehler{$wort} = $zaehler{$wort} +1;
   }
}

foreach $wort (keys %zaehler) {
print("$wort wurde $zaehler{$wort}-mal eingegeben\n");
}

In der ersten foreach Schleife soll die Operation nur dann stattfinden wenn $wort nicht leer ist. mit ->>>> $wort eq "" ist es der selbe Fehler.

Wie macht man es richtig?
 

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 17. Feb 2007 11:03   Titel:

Perl meckert nicht an, dass $wort leer sei. Perl meckert an, dass es $zaehler{$wort} beim ersten Auftauchen von $wort im Text ja noch nicht gibt. Das kann man (vermutlich) nur mit einer Fehlerbehandlung auf den Ausdruck abfragen. In Fehlerfall halt einfach $zaehler($wort) = 1;

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

perlies
Gast





BeitragVerfasst am: 17. Feb 2007 15:04   Titel:

Ok, muss noch lernen wie man mit Perl umgeht.
Danke für die Antwort.
Eventuell versuche ich das mal umzuschreiben, ist ja alles nur Übung.

MfG
 

klausweiss



Anmeldungsdatum: 26.02.2007
Beiträge: 2

BeitragVerfasst am: 26. Feb 2007 8:54   Titel:

Habe dir mal eben dazu ein Skript geschrieben, Code sollte selbst erklärend sein.

Code:

#!/usr/bin/perl

my %words;

while(<>)
{
  my @wordl = split /\s+/;

  foreach my $key (@wordl)
  {
     if(defined $words{$key})
     {
       $words{$key}++;
     }
     else
     {
       $words{$key} = 1;
     }
  }
}

foreach my $key (keys %words)
{
  print "$key kam $words{$key} vor\n";
}


_________________
GNU Maintainer
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy