Schrift
[thread]9131[/thread]

denkfehler in schleife

Leser: 1


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
FlorianL
 2007-06-28 11:20
#77932 #77932
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
Moin zusammen :)

ich hab hier ein kleines script das ne website abgrasen und mir alle user-id's in ein array schreiben soll, ich erhalte jedoch nur den letzten eintrag...

ich denke das regex matched halt und überschreibt die ganze zeit mein array? ich weiss es nich... hab jetz schon einiges ausprobiert.. dachte eigendlich ich mach sowas mit while, aber ich produziere jedes mal ne endlosschleife

der code:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
my @targetsite = $agent->content;
        foreach (@targetsite) {
               
 chomp;
               
 my @targets = $_ =~ m/.+act=attack&m=(\d+)/;   # regex matched optimal
               
 push(@targets,$1); # jetzt ist die id 2 mal drinne :(
               
 if ($DEBUG == '1') { print ("DEBUG: Found Target: @targets\n");}
        }


nochwas: wenn ich ne schleife hab ist ja $_ der aktuelle rückgabewert oder? aber was ist wenn ich darin ein regex mit () verwende? überschreib ich dann $_ ? warum funktioniert $_[1] nicht? :(

$agent->conf = CPAN:WWW::Mechanize
renee
 2007-06-28 11:30
#77933 #77933
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du machst in jedem Schleifendurchlauf ein neues Array... Und Du solltest auf den Erfolg des Matchens prüfen...

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
my @targetsite = $agent->content;
my @targets;

foreach (@targetsite) {
     push @targets, $_ =~ m/.+act=attack&m=(\d+)/
}

if ($DEBUG == '1') { 
    print ("DEBUG: Found Target: @targets\n");
}
\n\n

<!--EDIT|renee|1183016096-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2007-06-28 11:34
#77934 #77934
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=FlorianL,28.06.2007, 09:20]nochwas: wenn ich ne schleife hab ist ja $_ der aktuelle rückgabewert oder? [/quote]

Was meinst Du mit "Rückgabewert" bei einer Schleife?

Quote
aber was ist wenn ich darin ein regex mit () verwende? überschreib ich dann $_ ?


Nein, () hat mit $_ gar nichts zu tun. Bei der Verwendung von () werden die Variablen $1,$2,$3,... gesetzt (siehe perlvar

Quote
warum funktioniert $_[1] nicht? :(

$agent->conf = CPAN:WWW::Mechanize

$_[1] funktioniert nicht, weil die Matches wo anders gespeichert werden.\n\n

<!--EDIT|renee|1183016123-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
FlorianL
 2007-06-28 12:08
#77935 #77935
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
Morgen renee, hatte schon befürchtet du bist vieleicht im urlaub ;)

Also trotz deiner änderungen nimmt er sich nur die letze id die er auf der seite findet, vieleicht hab ich sonst nen fehler drin?!

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
sub attack {
        $agent->follow_link (n => 1 );
        $agent->follow_link (text => "Einstellungen", n => 1);
        $agent->follow_link (text => "Battle Home", n => 1);
        $agent->follow_link (text => "Targets", n => 1);
        if ($DEBUG == '1') { print("DEBUG: Getting Targets...\n");}
        my @targetsite = $agent->content;
        if ($DEBUG == '1') { print("DEBUG: Parsing Victims...\n");}
        my @targets;
        foreach (@targetsite) {
               
 push @targets, $_ =~ m/.+act=attack&m=(\d+)/;
        }
        if ($DEBUG == '1') { print ("DEBUG: Found Target: @targets\n");}
        if ($DEBUG == '1') { print("DEBUG: Attacking...\n");}
        foreach (@targets) {
               
 my $target = $_;
               
 $agent->get("http://$url/index.php?act=attack&m=$target");
               
 if ($DEBUG == '1') { print("DEBUG: Choosing best Weapon...\n");}
               
 my @weaponlist = $agent->content =~ m/.+&w=(\d)/;
               
 my @weapons = sort(@weaponlist);
               
 my $count = '1';
               
 if (defined $weapons[0]) {
               
         if ($DEBUG == '1') { print("DEBUG: Attack \#$count\n");}
               
         $agent->get("http://$url/index.php?act=attack&m=$target&w=$weapons[0]");
               
         print("\#$count $username Attacked Target id $target with Weapon $weapons[0]\n");
               
         $count++;
               
 } else {
               
         print("Cant attack $_, moving on to next Victim\n")
               
 }
               
 if ($count == '4') {
               
         print("Attacked 4 Targets, stopping...");
               
         exit 0;
               
 }
        }
        if ($DEBUG == '1') { print("DEBUG: Attack finished\n");}
}
renee
 2007-06-28 12:19
#77936 #77936
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Mach mal:
Code: (dl )
push @targets, $_ =~ m/act=attack&m=(\d+)/gs;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
FlorianL
 2007-06-28 12:34
#77937 #77937
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
funzt! Danke dir! (mal wieder ^^)

genug von perl, ich darf jetz ersma ksh scripten :P
renee
 2007-06-28 12:54
#77938 #77938
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du würde ich doch lieber bei Perl bleiben ;)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
FlorianL
 2007-06-28 13:15
#77939 #77939
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
ich doch auch, aber wenn der chef meint ich muss shellscripten dann muss ich wohl ;)

wobei ich das für nich sinnvoll halte, der hauptgrund wird wohl sein das hier sonst niemand perl kann und das script noch weiter pflegbar sein muss wenn ich mal nicht mehr hier bin :p
sid burn
 2007-06-28 13:26
#77940 #77940
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=FlorianL,28.June.2007, 11:15]ich doch auch, aber wenn der chef meint ich muss shellscripten dann muss ich wohl ;)

wobei ich das für nich sinnvoll halte, der hauptgrund wird wohl sein das hier sonst niemand perl kann und das script noch weiter pflegbar sein muss wenn ich mal nicht mehr hier bin :p[/quote]
1) Perl kann man Notfalls auch als eine erweiterte Form des Shellsscriptens ansehen
2) Kauf Perl Bücher, und verteile Sie. :D
3) Das ist ein gutes Argument nicht gekündigt zu werden: "Aber es kann hier doch sonst keiner Perl." ;)
4) Wenn du da bleiben willst dann streiche 2) wieder.
5) Wenn dir der Job da nicht gefällt, dann führe 2) wieder aus.\n\n

<!--EDIT|sid burn|1183022908-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
FlorianL
 2007-06-28 13:34
#77941 #77941
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
hehe, ich bin ja nichtmal richtiger programmierer, bin als sysadmin für unix/linux systeme eingestellt worden. Als rauskam das ich in meiner freizeit perl lerne wurde mir direkt ein ganzer klumpatsch voll arbeit aufgedrückt :)

ich würd schon gern hier bleiben, und so wie es aussieht stehn die chancen garnicht so schlecht das mein vertrag ende des jahres verlängert wird

naja das nurmal so ^^

shellscripts beherrsch ich eigendlich ganz gut, ist ja im prinzip nur ne aneinander reihung von shellcommands, perl find ich da schon viel interessanter...

naja, jetz is ersma mittag ;)
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2007-06-28 11:20.