Font
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12274[/thread]

array und exist



<< >> 7 entries, 1 page
guest Gast
 2008-07-30 18:23
#112908 #112908
Hallo Zusammen, ich habe folgenden Code:
Code (perl): (dl )
my @htmlsite_hosts = ('www.page1.cc','bla.page2.ch','www.page3.ch','www.page4.ch','www.page5.com','www.page6.com');

Nun möchte ich überprüfen, ob ein String in diesem array enthalten ist:
Code (perl): (dl )
1
2
if(exists($htmlsite_hosts{$link->gethost})){    
}

$link->gethost liefert ein string

Jedoch gibt er mir IMMER False zurück, egal ob der String im Array enthalten ist oder nicht, habe ich von han nachgeprüft.
Habe ich da mal wieder was mit PERL falsch verstanden?
moritz
 2008-07-30 18:25
#112909 #112909
User since
2007-05-11
923 articles
HausmeisterIn
[Homepage]
user image
Ja, du hast perl falsch verstanden. exists erwartet eine Array + Index, und der Index muss für Arrays eine Zahl sein.

Für das, was du machen willst, empfiehlt sich ein Hash:

Code (perl): (dl )
1
2
my %hosts = map { $_ => 1 } @htmlsite_hosts;
if (exists $hosts{$link->gethost}){ ... }
renee
 2008-07-30 18:26
#112910 #112910
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
Ich empfehle Dir auf jeden Fall mal Wiki:use strict zu benutzen. Du verwendest erst ein Array und später einen Hash... Mit use strict wärst Du darauf aufmerksam gemacht worden.

Zusätzlich funktioniert exists bei Arrays etwas anders, weil Du ja überprüfst, ob ein Element mit einem bestimmten Index (also eine Integer-Zahl) existiert (if( exists $array[3] )).

Du solltest das hier machen:

Code (perl): (dl )
1
2
3
4
my $host = $link->gethost;
if( grep{ $host eq $_ }@htmlsite_hosts ){
    print "enthalten\n";
}
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/
guest Gast
 2008-07-30 18:29
#112911 #112911
ok danke, das halt geholfen. obwohl ich nicht genau weiss weshalb ;-)
danke
renee
 2008-07-30 18:33
#112912 #112912
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
Man sollte schon verstehen, warum was funktioniert oder nicht...

Welche Lösung hast Du genommen und was hast Du nicht so ganz verstanden?
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/
guest Gast
 2008-07-30 18:44
#112913 #112913
die erste
Code (perl): (dl )
1
2
my %hosts = map { $_ => 1 } @htmlsite_hosts;
if (exists $hosts{$link->gethost}){ ... }

nehme perl eigentlich nur weil mein hoster sonst keine scripts erlaubt. ;-)
habe nicht wirklich vor perl zu verstehen
GwenDragon
 2008-07-30 19:14
#112915 #112915
User since
2005-01-17
14651 articles
Admin1
[Homepage]
user image
Gast+2008-07-30 16:44:41--

nehme perl eigentlich nur weil mein hoster sonst keine scripts erlaubt. ;-)
habe nicht wirklich vor perl zu verstehen

Warum willst du dann Skripte in Perl erstellen, wenn du nichts verstehen willst?
Wir können dir doch nicht die Grundlagen der Perl-Programmierung hier vorkauen und dir komplett die Skripte schreiben.
Lernen musst du schon selbst.
<< >> 7 entries, 1 page



View all threads created 2008-07-30 18:23.