webForumDet fria alternativet

Omvandla variabel.

Perl & Rubyur Perl, Python, Ruby och övrig CGI

28 svar · 333 visningar · startad av cgi

Medlem sedan jan. 2000371 inlägg
Frågan#1

Borde inte detta funka för att omvandla en variabel:?

while ($info->{'inlagg'}) {
$_ =~ s/\[namn\]/$row[1]/ig;
push (@inlagg,$_);
}
print "@inlagg";

Medlem sedan jan. 2000371 inlägg
#2

Ingen som har kunskap i detta.?

Medlem sedan apr. 2000642 inlägg
#3

vad är egentligen

$info->{'inlagg'}

för någonting?

------------------
PeterSign v 2.3.36

Medlem sedan jan. 2000371 inlägg
#4

$info->{'inlagg'} är information från databasen,
koden funkar om jag hämtar informationen ifrån en vanlig textfil,
while (<INFO> ) {
men inte ifrån en riktig databas,
du kanske har en bättre lösning på detta?

Medlem sedan apr. 2000642 inlägg
#5

jag är lite osäker på din while-slinga...

om du använder DBI för att prata med databasen kan du säga:

while (my $p = $sth->fetchrow_hashref())

istället.

------------------
PeterSign v 2.3.36

Medlem sedan jan. 2000371 inlägg
#6

Nej, det där funkade inget bättre.

Medlem sedan apr. 2000642 inlägg
#7

få se.. kan du klistra in lite mer av koden runt om, så att vi kan få se lite mer helheten..?

------------------
PeterSign v 2.3.36

Medlem sedan jan. 2000371 inlägg
#8

Visst kan jag det:

$sth = $dbh->prepare("SELECT * from tabell order by nr DESC LIMIT $start2, $poster_per_sida");
$sth->execute();

$sth2 = $dbh->prepare("SELECT * from admin");
$sth2->execute;
$info = $sth2->fetchrow_hashref();

while (@row = $sth->fetchrow_array) {

while ($info->{'inlagg'}) {
$_ =~ s/\[namn\]/$row[1]/ig;

push (@inlagg,$_);
}
print "@inlagg";

}

Medlem sedan apr. 2000642 inlägg
#9

okey.. få tänka :)

 

$sth = $dbh->prepare("SELECT * from tabell order by nr DESC LIMIT $start2, $poster_per_sida");
$sth->execute();

$sth2 = $dbh->prepare("SELECT * from admin");
$sth2->execute; 
$info = $sth2->fetchrow_hashref();

while (@row = $sth->fetchrow_array) {

while ($info = $sth2->fetchrow_hashref() && $_ = $info->{'inlägg'}) {
$_ =~ s/\[namn\]/$row[1]/ig;

push (@inlagg,$_);
}
print "@inlagg";

}

kanske funkar?

------------------
PeterSign v 2.3.36

[Redigerat av Peter_B den 22 apr 2001]

Medlem sedan jan. 2000371 inlägg
#10

Nej det funkar inte. :(

Medlem sedan apr. 2000642 inlägg
#11

hmm.. blir det kompileringsfel eller vadå?

kan du skriva dit lite debug-printar så att du kan testa vad som finns i alla variabler?

------------------
PeterSign v 2.3.36

Medlem sedan jan. 2000371 inlägg
#12

Och med debug-printar menar du. :q

Medlem sedan apr. 2000642 inlägg
#13

ah, tja att du skriver ut innehållet i alla variabler i ditt program, precis innan de ska användas. typ

print "DEBUG: \$_ = $_";

samt allt annat som kan vara av intresse. det blir mycket lättare att leta fel då, eftersom man kan följa precis vad som händer.

------------------
PeterSign v 2.3.36

Medlem sedan jan. 2000371 inlägg
#14

print "DEBUG: har jag faktiskt aldrig sett förut,
men det ger iallafall inget felmeddelande.

[Redigerat av cgi den 23 apr 2001]

Medlem sedan apr. 2000642 inlägg
#15

just ordet "debug" spelar ingen roll, det är bara så att man som testare vet vad det är man ser.

när man skriver och testar ett nytt program så är det bra att skriva ut lite relevanta variabler då och då, så märker man ganska lätt vad som blir fel.

sen när programmet är klart så kan man ta bort det hela. alternativt:

if ($debug) { print "debug: blabla"; }

och sedan sätta $debug=1;

i början av scriptet och sedan ändra till $debug=0; när man är klar.

tror att ditt problem kräver en lite närmare analys (på detta sätt) av vad som händer.

------------------
PeterSign v 2.3.36

Medlem sedan jan. 2000371 inlägg
#16

Jag har satt så här:

$debug = '1';
if ($debug) {
print qq~ $_ =~ s/\[namn\]/$row[1]/ig ~;
$debug = '0';
}

men inget händer.

Medlem sedan apr. 2000642 inlägg
#17

hmmm...

kanske

$debug = '1';
if ($debug) { 
$_ =~ s/\[namn\]/$row[1]/ig;
print "debug: $_";
$debug = '0';
}

annars... om det känns helt hopplöst så kan du maila ditt script till mig, peter@scorpiondata.com, så tar jag och analyserar lite nogrannare.

------------------
PeterSign v 2.3.36

Medlem sedan jan. 2000371 inlägg
#18

Nej du, det händer fortfarande inget.
Visst skulle jag kunna maila över scriptet men du har ju nästan sett hela några inlägg längre upp.

Medlem sedan apr. 2000642 inlägg
#19

jag tror nog inte att felet finns i den del av koden som omvandlar, tror nog att det är fel i sakerna som hämtar från databasen. prova att göra allt utan att omvandla först, du kan lägga till det sen när du vet att allt annat funkar.

------------------
PeterSign v 2.3.36

Medlem sedan jan. 2000371 inlägg
#20

Allt annat funkar kanon,
det är när jag klistrar in:

while ($info = $sth2->fetchrow_hashref() && $_ = $info->{'inlagg'}) {
$_ =~ s/\[namn\]/$row[1]/ig;

push (@inlagg,$_);
}
print "@inlagg";

som det inte fungerar.

142 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)