webForumDet fria alternativet

Skriva html kod

6 svar · 653 visningar · startad av stattin

stattinMedlem sedan jan. 2005713 inlägg
#1

Först vill jag säga hej till alla och att jag nu ställer min absolut första fråga i detta forum.

Fråga:

Kan man läsa in html kod på annat sätt än:

print "<html>\n";
print "<body>\n";

Så man slipper skriva rad för rad.

Ungefär så som nedan:

en början
en massa html kod.....
ett slut

Kan ju också tillägga att jag är extremt nybörjare på perl.

/stattin

JojoxxMedlem sedan juni 20004 308 inlägg
#2

Välkommen till wF :)

Jodå, det finns ett par sett. Jag brukar använda qq. Så här;

print qq^<p>här kommer
<strong>html</strong> på
flera rader^;

Fördelen är att du kan byta ut "^" mot något annat tecken som du inte använder inne i själva stycket.

Peter_BMedlem sedan apr. 2000642 inlägg
#3

Du kan även ha flera rader i en vanlig printsats, typ:

print "Hej
Hopp
Kalle
Stropp!
";

Nackdelen är att specialtecken måste ha \ framför sig, vilket kan ställa till det lite om man ska skriva tex "-tecken utan att vilja tänka för mycket. Detta ger även automatiskt \n efter varje ord, rättare sagt, det betyder samma sak. Sen måste man inte byta rad i html, men det blir ju lite lättare att läsa om man kollar på källkoden i brownsern..

Du kan lösa \-problemet genom att skriva:

print 'Hej
Hopp ....
';

istället, men då får du inte värdet på variablerna insatta som du får med "-tecken.

stattinMedlem sedan jan. 2005713 inlägg
#4

Tackar!

Har en fråga till, vi kan nog ta det i samma tråd:

Detta script lär vara bekant:

$min_fil = "min_datafil.txt";
print "Content-type:text/html\n\n";
open(INDATA,"$min_fil") || &Fatal;
@rader = <INDATA>;
foreach $rad (@rader) 
{
	print $rad;	
}
close(INDATA);

sub Fatal 
{
	print "Kan inte öppna filen $min_fil för läsning."
}

Nu är problemet det att jag har försökt lagt in html kod före "print $rad;" och html kod efter men lyckas inget vidare med det.

Filen jag läser in ska höra ihop med med koden ovanför och under.

JojoxxMedlem sedan juni 20004 308 inlägg
#5
foreach $rad (@rader)
{
...
}

Definierar en loop, så vill du lägga till html-data före och efter som inte skall upprepas lika många gånger som antaler rader i filen måste du lägga till denna html-kod utanför loopen.

$min_fil = "min_datafil.txt";
print "Content-type:text/html\n\n";
open(INDATA,"$min_fil") || &Fatal;
@rader = <INDATA>;
print qq^... lite html...^;
foreach $rad (@rader) 
{
	print $rad;	
}
print qq^... mer html...^;
close(INDATA);

sub Fatal 
{
	print "Kan inte öppna filen $min_fil för läsning."
}
stattinMedlem sedan jan. 2005713 inlägg
#6

:D Tack igen!

Nu lär jag klara mig ett tag till.

JojoxxMedlem sedan juni 20004 308 inlägg
#7

Tanken är att du skall acceptera det svar som gav lösningen på din fråga, inte ditt eget inlägg (för framtida läsare) :)

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