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

MySQL und Perl

Leser: 3


<< |< 1 2 3 4 ... 8 >| >> 72 Einträge, 8 Seiten
H3llGhost
 2007-10-14 17:05
#100795 #100795
User since
2007-10-14
60 Artikel
BenutzerIn
[default_avatar]
Hallo Leute,

wenn ich ein Array was folgendermaße aussieht habe:

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
27
28
29
30
31
Servers[0] = ("AddressPort"                    => "xxx.xxx.xxx.xxx:xxxxx", 
"MinPlayers" => "6",
"AdminContact" => "webmaster@battle55-stats.de",
"HLStatsURL" => "http://www.battle55-stats.de",
"DisplayResultsInBrowser" => "0",
"MasterServerData" => "7",
"MasterServerInterval" => "200",
"BroadCastEvents" => "0",
"BroadCastPlayerActions" => "0",
"BroadCastEventsCommand" => "say",
"BroadCastEventsCommandSteamid" => "0",
"BroadCastEventsCommandAnnounce" => "say",
"PlayerEvents" => "1",
"PlayerEventsCommand" => "say",
"PlayerEventsCommandSteamid" => "0",
"PlayerEventsCommandOSD" => "",
"PlayerEventsAdminCommand" => "",
"ShowStats" => "1",
"TKPenalty" => "50",
"SuicidePenalty" => "5",
"AutoTeamBalance" => "0",
"AutoBanRetry" => "0",
"TrackServerLoad" => "1",
"MinimumPlayersRank" => "0",
"Admins" => "",
"SwitchAdmins" => "0",
"IgnoreBots" => "1",
"SkillMode" => "0",
"GameType" => "0",
"EnablePublicCommands" => "1",
"Mod" => "")


Und dieses nun aus einer MySQL-DB auslesen möchte.

Die Tabelle sieht folgendermaße aus:
ID, AddressPort, MinPlayers usw. ...

Die ID vorne soll dann so eingesetzt werden Server[ID].
Aber wie mache ich das mit Perl?

EDIT:
Versteht ihr überhaupt was ich meine? ... ;)
GwenDragon
 2007-10-14 18:02
#100796 #100796
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Schau dir mal CPAN:DBI an.

Ausschnitt:
Code (perl): (dl )
1
2
3
4
5
6
my $sql = 'select * from Datenbank';
my $hash_ref;

while ($hash_ref = $dbh->selectrow_hashref($sql)) {
  Servers[$hash_ref->{'ID'}] = $$hash_ref;
}
pq
 2007-10-14 18:39
#100797 #100797
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
auch lesenswert: http://perloo.de/DBI/
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
H3llGhost
 2007-10-14 19:33
#100799 #100799
User since
2007-10-14
60 Artikel
BenutzerIn
[default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        my $query = "
                SELECT
                        serverId,
                        game,
                        name,
                        rcon_password,
                        publicaddress
                FROM
                        hlstats_Servers
                WHERE
                        address='$address' AND
                        port='$port'
        ";
        my $result = &doQuery($query);
        my $hash_ref;
 
        while ($hash_ref = $dbh->selectrow_hashref($result)) {
         Servers[$hash_ref->{'serverId'}] = $$hash_ref;
        }


Das müsste doch auch gehen oder?
Linuxer
 2007-10-14 19:47
#100800 #100800
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hi,

ohne es getestet zu haben, glaube ich dennoch nicht, dass der Code funktioniert...

$hash_ref soll doch eine Referenz auf einen Hash enthalten, aber mit $$hash_ref dereferenzierst Du einen Skalar ...

Ausserdem ist die Benutzung von Barewords ( hier "Servers" ) nicht erwünscht; ich denke Du hast ein "$" vorm "Servers" vergessen.

Mein Vorschlag wäre:
Code (perl): (dl )
1
2
3
4
5
# mit jedem Durchlauf gibt es eine neue Variable $hash_ref mit eigener Speicheradresse
while ( my $hash_ref = $dbh->selectrow_hashref( $result ) ) {
   # $hash_ref nicht dereferenzieren, weil wir einen AoH aufbauen; perldoc perldsc
   $Servers[ $hash_ref->{'serverID'} ] = $hash_ref;
}
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
H3llGhost
 2007-10-14 19:54
#100801 #100801
User since
2007-10-14
60 Artikel
BenutzerIn
[default_avatar]
Hallo Linuxer,

danke erstmal für den Hinweis mit dem fehlenden $-Zeichen ... ;)
Ich wäre wahrscheinlich dran zu Grunde gegangen! ... :D

Wie das mit dem derefenzieren aussieht keine Ahnung ...
Ich werde einfach mal deinen Rat befolgen ... ;)
pq
 2007-10-15 01:55
#100805 #100805
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
hmm, ich werde das mal zur faq hinzufügen, dass man doppelposts bitte verlinken soll.
http://forum.perl.de/bb/mysql-und-perl-t4770.html

Wiki:AllgemeinesWieFrageIchbeiPerlCommunity
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
Linuxer
 2007-10-15 12:51
#100817 #100817
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Die Frage ist auch im Perlboard zu finden:



Perlboard Beitrag
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
H3llGhost
 2007-10-15 20:21
#100862 #100862
User since
2007-10-14
60 Artikel
BenutzerIn
[default_avatar]
Ich bitte vielmals um Entschuldigung!
Habe nun alle weiteren Posts gelöscht ... ;)

Ich wüsste einfach nicht im welchem Forum ich posten sollte und da habe ich einfach in allen gepostet, aber ich merke nun, dass das hier das BESTE ist!

Wisst ihr eigentlich einen guten Perl-Debugger?
Und kennt ihr ein Programm mit dem ich perl-Skripte ausführen kann und dessen Ausgaben loggen?
GwenDragon
 2007-10-15 20:41
#100866 #100866
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Der Beste Perl-Debugger (jedenfalls der am meisten kann) ist der Perleigene.

Du rufst wie folgt auf
perl -d Skriptname.pl

Es gibt zwar noch sogenannte IDE (Entwicklungsumgebungen für Perl) mit eingebautem Debugger, aber die kosten meist Geld oder sind nicht besonders gut zu bedienen.
Siehe auch Wiki:PerlEditoren
<< |< 1 2 3 4 ... 8 >| >> 72 Einträge, 8 Seiten



View all threads created 2007-10-14 17:05.