Perl : Useless use of private variable in void context

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von Nano, 08.03.2008.

  1. Nano

    Nano Foren As

    Dabei seit:
    02.12.2006
    Beiträge:
    93
    Zustimmungen:
    0
    Hi ich habe folgende Warnung und komme der sache nicht ganz auf die spur


    Useless use of private variable in void context at Line 40

    das entspricht bei mir
    Code:
                    for($i; $i < $#array; $i++){
                             if( $array[$i] =~ /^[A-Z a-z]+:$/ ){
                                    $i--;
                                    last;
                            }
                            $string .= $array[$i];
                    } # ZEILE 40!!!
    
    
    
    der fehler taucht im programm etwas später wieder auf, im web konnte ich dazu nichts aussagekräftiges finden jemand meinte etwas von einem bug,...
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Gott_in_schwarz, 08.03.2008
    Zuletzt bearbeitet: 08.03.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    in so'ner c-like for-schleife solltest du dem $i im ersten "feld" einen wert zuweisen. (traditionellerweise 0)
    Code:
    my $i;
    for ([b]$i = 0[/b]; $i < 100; $i++) {print "omg\n"}
    -> klick or die <-

    generell hat perl ne ziemlich gute dokumentation:
    perldoc
    sind alles manpages die man auch problemlos über die kommandozeile abrufen/querien etc. kann. (wenn perldoc installiert ist..)

    [edit]:
    also wenn du im ersten feld nichts mit dem $i machen willst, lass es einfach komplett leer..
    Code:
    my $i = 0;
    for (; $i < 100; $i++) {print "zja!\n"}
    dann gibts auch keine warnung, denn wenn du den link oben inzwischen gelesen hast, solltest du nun wissen, dass für perl das hier:
    Code:
    for ($i; $i < 10; $i++){...}
    dasselbe wie das hier ist:
    Code:
    [b]$i;[/b]
    while($i < 10){ ...} continue {$i++;}
    ich finde das zeigt schön was perl dir bereits gesagt hat: diese anweisung ($i;) ist völlig sinnlos und macht nichts (:
     
  4. Nano

    Nano Foren As

    Dabei seit:
    02.12.2006
    Beiträge:
    93
    Zustimmungen:
    0
    klasse danke , ja die aussage war schon recht klar aber ich wusste nicht das $i in der forschleife nicht geht wenn $i vorher inizialisiert wurde
     
  5. musiKk

    musiKk Dr. Strangelove

    Dabei seit:
    30.07.2006
    Beiträge:
    264
    Zustimmungen:
    0
    Ort:
    Leipzig
    Naja, du benutzt doch $i dann gleich und woher soll der Perl-Interpreter wissen, wo es losgeht? Die for-Schleife muss ja nicht mit 0 beginnen. Die kann ja auch mit -5.5 beginnen. Oder sonstwas.
     
  6. #5 Wolfgang, 08.03.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Soetwas lässt sich natürlich auch unter Verwendung der Default-Variable schreiben.
    Code:
    print "xyz$_\n" for (0..100);
    
    Wolfgang
     
  7. musiKk

    musiKk Dr. Strangelove

    Dabei seit:
    30.07.2006
    Beiträge:
    264
    Zustimmungen:
    0
    Ort:
    Leipzig
    In diesem Beispiel aber eher kontraproduktiv. Wenn die Schleife per last beendet wird, wird die Variable hier nochmal um eins dekrementiert, offensichtlich also weiterverwendet. Und da es viele Funktionen gibt, die $_ veraendern, kann das leicht kaputt gehn. Meiner bescheidenen Meinung nach sollte man $_ so oft es geht vermeiden, aber das darf gerne anders gesehn werden.
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. #7 Wolfgang, 08.03.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Für flüchtige Variablen ist $_ genau das Richtige.
    Ein einfacher Counter für eine feste Anzahl von Schleifendurchläufen bedarf nicht extra einer weiteren Variable.
    Zumahl auch soetwas geht:
    Code:
    my $cn=100;
    print "xyz$_\n" for (0..$cn);
    
    Das sind immer locale Vars:
    Beispiel: sogar das geht:
    Code:
    my $i=10;
    for (1..20){print "xyz$_\n" for (0..$i)};
    
    Gruß Wolfgang
     
  10. musiKk

    musiKk Dr. Strangelove

    Dabei seit:
    30.07.2006
    Beiträge:
    264
    Zustimmungen:
    0
    Ort:
    Leipzig
    Wie gesagt, aus dem Dekrementieren von $i in des OPs Code wuerde ich schliessen, dass $i noch von Belang ist (sonst waere die Dekrementierung ueberfluessig) und somit nicht fluechtig.
    Das andere ist halt Geschmackssache. Ich versuche $_ und Konsorten gerade deshalb so oft wie moeglich zu vermeiden, weil der Quelltext sonst wie "line noise" aussieht.
     
Thema: Perl : Useless use of private variable in void context
Besucher kamen mit folgenden Suchen
  1. Useless use of private variable in void context perl

Die Seite wird geladen...

Perl : Useless use of private variable in void context - Ähnliche Themen

  1. Linux Foundation: Hyperledger-Projekt startet mit 30 Mitgliedern

    Linux Foundation: Hyperledger-Projekt startet mit 30 Mitgliedern: Das Hyperledger-Projekt der Linux Foundation will eine neue Form der dezentralisierten Kontoführung nach dem Prinzip der »distributed ledger« bei...
  2. Perl 6 offiziell vorgestellt

    Perl 6 offiziell vorgestellt: Wie erwartet, ist die Version C(hristmas) von Perl 6 veröffentlicht worden. Perl 6 stellt nicht, wie der Name suggeriert, einen Nachfolger von...
  3. Perl: 20 Jahre CPAN

    Perl: 20 Jahre CPAN: Vor 20 Jahren wurde das erste Modul in das Comprehensive Perl Archive Network (CPAN) hochgeladen, woran Neil Bowers mit einem Abriss der...
  4. Perl 5.22.0 freigegeben

    Perl 5.22.0 freigegeben: Die neue Version 5.22 von Perl bringt den Anwendern mehr Sicherheit bei Eingabedateien, Unicode 7.0 und zahlreiche weitere Verbesserungen....
  5. [Perl] Perl OO Methodenaufruf in anderem Objekt

    [Perl] Perl OO Methodenaufruf in anderem Objekt: Hallo, Ich bin dabei in Perl ein Pokerspiel zu programmieren, hänge aber momentan an einem Problem, wo ich nicht weiterkomme. Ich habe die...