Schrift
[thread]5692[/thread]

strict will nicht: :(



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
Cooly
 2003-09-06 15:26
#84363 #84363
User since
2003-08-04
81 Artikel
BenutzerIn
[Homepage] [default_avatar]
hallo

das ganze script hängt nur mit use strict - und zwar da wo der hash deklariert wird (
Code (perl): (dl )
our $coolhash{$file} = "$counts|$forsrc";
)
vielleicht muss man das ganze anders anfangen - hab nicht wirklich viel erfahrung mit strict :(

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
print "Content-type: text/html\n\n";


use strict;
use warnings;

my $in = $ENV{'QUERY_STRING'};
chomp $in;

our ($File, $Src) = split(/\&/,$in);

open(FILE, "<countdown.log") || die "HOHO! niemals wirst du die Datei öffnen ;-)\n";
our @downs = <FILE>;
chomp @downs;
close(FILE);


foreach (@downs) {

        my ($counts, $file, $forsrc) = split(/\|/,$_);


        our $coolhash{$file} = "$counts|$forsrc";

}


foreach  (keys %coolhash){ 

         my ($cnts,$srct) = split(/\|/, $coolhash{$_});
         if (($_ eq $File) && ($srct == $Src)) { print "$cnts"; exit;}

}


danke

Cooly
steinwolf
 2003-09-06 15:41
#84364 #84364
User since
2003-08-04
367 Artikel
BenutzerIn
[default_avatar]
statt "our" verwende besser "my"! Da dein Code nicht in einer Funktion steht wird die Variable automatisch global deklariert..
"Did you know? You can use your old motor oil to fertilize your lawn." - Blinkster - Professionelles EDV Forum
Cooly
 2003-09-06 15:46
#84365 #84365
User since
2003-08-04
81 Artikel
BenutzerIn
[Homepage] [default_avatar]
danke - leider bringt die verwendung von my das selbe ergebnis :(
steinwolf
 2003-09-06 15:51
#84366 #84366
User since
2003-08-04
367 Artikel
BenutzerIn
[default_avatar]
was ist damit?
edit: was soll das script überhaupt machen? Was steht in $cnts?
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use strict;
use warnings;

chomp(my $in = $ENV{'QUERY_STRING'});

my ($File, $Src) = split(/\&/,$in);

open(FILE, "<countdown.log") || die $!;
chomp(my @downs = <FILE>);
close(FILE);

my %coolhash = {};
foreach (@downs)
{

       my ($counts, $file, $forsrc) = split(/\|/,$_);
       $coolhash{$file} = "$counts|$forsrc";

}

foreach  (keys %coolhash)
{
        my ($cnts,$srct) = split(/\|/, $coolhash{$_});
        if (($coolhash{$_} eq $File) && ($srct == $Src)) { print "$cnts"; exit;}

}
\n\n

<!--EDIT|steinwolf|1062849212-->
"Did you know? You can use your old motor oil to fertilize your lawn." - Blinkster - Professionelles EDV Forum
Cooly
 2003-09-06 16:06
#84367 #84367
User since
2003-08-04
81 Artikel
BenutzerIn
[Homepage] [default_avatar]
ahh ok ich denke es scheint so zu funktionieren - also kann man hashs (listen) nicht innerhalb einer Schleife deklarieren (unter benutzung von strict)


ist nur nen kleines script was per virtual() in eine website eingebunden wird und die downloads anzeigt :)


danke\n\n

<!--EDIT|Cooly|1062850304-->
steinwolf
 2003-09-06 16:26
#84368 #84368
User since
2003-08-04
367 Artikel
BenutzerIn
[default_avatar]
ich denke doch, man kann zumindest nicht mehrmals hintereinander deklarieren, da ja in jeder iteration ein weiteres my ausgeführt wird..
"Did you know? You can use your old motor oil to fertilize your lawn." - Blinkster - Professionelles EDV Forum
pq
 2003-09-06 16:51
#84369 #84369
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Cooly,06.09.2003, 13:26]das ganze script hängt  nur mit use strict - und zwar da wo der hash deklariert wird (
Code (perl): (dl )
our $coolhash{$file} = "$counts|$forsrc";
)[/quote]
du kannst eine variable deklarieren und ihr auch gleichzeitig
etwas zuweisen. hier deklarierst du sie (mit our()) und
benutzt sie schon gleich. das geht nicht.
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
steinwolf
 2003-09-06 18:14
#84370 #84370
User since
2003-08-04
367 Artikel
BenutzerIn
[default_avatar]
klingt zwar nach bullshit, aber es stimmt..:p
"Did you know? You can use your old motor oil to fertilize your lawn." - Blinkster - Professionelles EDV Forum
Crian
 2003-09-08 17:35
#84371 #84371
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Außerdem verwendest Du die Variable später außerhalb der Schleife, also musst Du sie natürlich vorher deklarieren.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
ronald
 2003-09-09 17:22
#84372 #84372
User since
2003-08-15
76 Artikel
BenutzerIn
[default_avatar]
Quote
[quote=Cooly,06.09.2003, 13:26]das ganze script hängt  nur mit use strict - und zwar da wo der hash deklariert wird (
Code (perl): (dl )
our $coolhash{$file} = "$counts|$forsrc";
)

du kannst eine variable deklarieren und ihr auch gleichzeitig
etwas zuweisen. hier deklarierst du sie (mit our()) und
benutzt sie schon gleich. das geht nicht.
[/quote]

Aber natürlich kann man eine Variable definieren und ihr gleichzeitig einen Wert zuweisen.

Das Problem ist aber, dass %coolhash nicht definiert ist! Du versuchtest, nur ein Element des Hashes zu definieren. Das geht natürlich nicht.

Also:
Code (perl): (dl )
1
2
my %coolhash;
$coolhash{$file} = "$counts|$forsrc";
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2003-09-06 15:26.