Pro-Linux.de

Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 20. Nov 2018 23:29

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: PERL - ist $var leer?
BeitragVerfasst: 16. Feb 2007 16:18 
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&#40;@woerter = <STDIN>&#41;; # Beenden mit STRG-D
foreach $wort &#40;@woerter&#41; &#123;
if&#40;$wort&#41; &#123; # Hier will ich prüfen ob $wort leer ist, nur wie?
$zaehler&#123;$wort&#125; = $zaehler&#123;$wort&#125; +1;
	&#125;
&#125;

foreach $wort &#40;keys %zaehler&#41; &#123;
print&#40;"$wort wurde $zaehler&#123;$wort&#125;-mal eingegeben\n"&#41;;
&#125;
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?


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 17. Feb 2007 11:03 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
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.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 17. Feb 2007 15:04 
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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 26. Feb 2007 8:54 
Offline

Registriert: 26. Feb 2007 8:39
Beiträge: 2
Habe dir mal eben dazu ein Skript geschrieben, Code sollte selbst erklärend sein.
Code:
#!/usr/bin/perl

my %words;

while&#40;<>&#41;
&#123;
  my @wordl = split /\s+/;

  foreach my $key &#40;@wordl&#41;
  &#123;
     if&#40;defined $words&#123;$key&#125;&#41;
     &#123;
       $words&#123;$key&#125;++;
     &#125;
     else
     &#123;
       $words&#123;$key&#125; = 1;
     &#125;
  &#125;
&#125;

foreach my $key &#40;keys %words&#41;
&#123;
  print "$key kam $words&#123;$key&#125; vor\n";
&#125;


_________________
GNU Maintainer


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de