Schrift
[thread]6735[/thread]

warning: Attempt to free unreferenced scalar (Seite 2)

Leser: 2


<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten
ronald
 2005-02-25 09:03
#52037 #52037
User since
2003-08-15
76 Artikel
BenutzerIn
[default_avatar]
[quote=steffenw,24.02.2005, 09:55]nee, das ist ein "simples" CGI-Script
Code: (dl )
1
2
3
4
5
6
7
8
9
...
elsif {
my $ref; # die Zeile wird angemeckert aber funktionieren tut alles
if (
%ab and $FORM{switch} eq 'ab' and $ref = \%ab
or
%ba and $FORM{switch} eq 'ba' and $ref = \%ba
) {
...
[/quote]
Code: (dl )
1
2
3
4
5
6
  if (
%ab and $FORM{switch} eq 'ab' and $ref = \%ab
or
%ba and $FORM{switch} eq 'ba' and $ref = \%ba
) {
...


Bist du sicher, dass du die Variable $ref belegen willst?
Oder willst du $ref und \%ab vergleichen? Falls ja, gibt es da keine bessere Methode??
pq
 2005-02-25 13:02
#52038 #52038
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=steffenw,24.02.2005, 23:00]"Attempt to free unreferenced scalar" was bedeutet das? Das war eigentlich meine ursprüngliche Frage. Wie kann ich so eine Warnung provozieren?[/quote]
1. perldoc perldiag
2. perl -we 'for (1) { map { exit } (1) }'
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
steffenw
 2005-02-25 16:27
#52039 #52039
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=ronald,25.02.2005, 08:03][quote=steffenw,24.02.2005, 09:55]Bist du sicher, dass du die Variable $ref belegen willst?[/quote]
Ja @ronald, das ist ja genau der Punkt. Wenn etwas im Hash %ab oder %ba ist und wenn die Wahl auch noch auf diesen fällt, dann soll $ref genau darauf verweisen. Wenn ich es anders mache, dann habe ich mehrere else-Zweige, habe dann Probleme, daß ein elsif nicht mehr greift und, und, und. Oder ich müßte eine Vorverarbeitung machen und mir irgendein Zwischenergebnis merken, was ich dann teste. Dann ist der Berechnungscode aber weit weg vom Test und das dann wieder unübersichtlich. Im Fall von einem elseif wäre die Berechnung vielleicht nicht einmal nötig. Das ist ja gerade der Vorteil von Perl, daß man Zuweisungen machen kann und dann das Ergebnis der Zuweisung auch wieder in einem logischen Kontext weiterverarbeiten kann. So wird das ganze übersichtlicher und man muß sich nicht irgendwelche Namen für irgendwelche temporären Variablen ausdenken.
$SIG{USER} = sub {love 'Perl' or die};
steffenw
 2005-02-25 16:58
#52040 #52040
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=pq,25.02.2005, 12:02][/quote]
Danke @pq, perldiag habe ich noch nie gebraucht, bisher sah ich meine Fehler immer gleich.

Ich hab's probiert - ja, der Fehler kommt. Hängt es damit zusammen, daß hier erst $_ der Alias für das Schleifenelement ist und dann der für das ge-map-te Element und Perl dann mittenraus nicht mehr richtig weiß, was denn nun mit dem $_ ist? Geschnallt habe ich es nämlich noch nicht.
$SIG{USER} = sub {love 'Perl' or die};
pq
 2005-02-25 19:00
#52041 #52041
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=steffenw,25.02.2005, 15:58]Ich hab's probiert - ja, der Fehler kommt. Hängt es damit zusammen, daß hier erst $_ der Alias für das Schleifenelement ist und dann der für das ge-map-te Element und Perl dann mittenraus nicht mehr richtig weiß, was denn nun mit dem $_ ist? Geschnallt habe ich es nämlich noch nicht.[/quote]
ich hab es auch nicht geschnallt. auf jeden fall scheint mir das ein bug zu
sein - aber halt ein mehr oder weniger dokumentierter =)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
steffenw
 2005-02-25 21:34
#52042 #52042
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Dann sind wir schon, 2 die nicht wissen warum das so ist. Vielleicht erklärt's uns noch einer. Wenn nicht, ist es auch nicht so schlimm.

Könnte ein Bug sein, denn ich habe gestern versucht, das Script auf den wesentlichen Teil zusammenzustreichen, aber dann war auch die Warnung weg. Das hätte eigentlich nicht passieren dürfen. Ich hatte nur Teile herausgenommen, die nichts damit zu tun hatten.
$SIG{USER} = sub {love 'Perl' or die};
Gast Gast
 2005-02-25 22:31
#52043 #52043
Welche perl Version? Google mal nach der Fehlermeldung +perl, es gibt ein paar Berichte über derartige Fehler in 5.8.2/3
steffenw
 2005-02-25 22:45
#52044 #52044
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
This is perl, v5.8.3 built for MSWin32-x86-multi-thread
(with 8 registered patches, see perl -V for more detail)

Copyright 1987-2003, Larry Wall

Binary build 809 provided by ActiveState Corp. http://www.ActiveState.com
ActiveState is a division of Sophos.
Built Feb 3 2004 00:28:51
$SIG{USER} = sub {love 'Perl' or die};
esskar
 2005-02-25 23:08
#52045 #52045
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
du weisst schon, dass ungerade versions nummern nicht stabil sind?
aber egal, fehler kommt auch bei stable

witzig ist
perl -we "for (1) { map { exit } ($_) }"
perl -we "for ($_) { map { exit } (1) }"
perl -we "for ($_) { map { exit } ($_) }"
Gast Gast
 2005-02-25 23:23
#52046 #52046
Wow. Was dagegen wenn ich das nächste Woche mal in clpm zur Diskussion stelle?
<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten



View all threads created 2005-02-24 10:37.