Sida 1 av 2

Perl-variabel -> Visas på HTML-sida. *Löst*

Postat: 11 juli 2006, 00:04:20
av JimmyAndersson
Åke och Bosse (mina hjärnceller) har svikit mig för tillfället.. :oops:

Jag har en variabel i ett perl-script som jag vill visa på en html-sida. (Antingen i ett formulär eller tabell, det kvittar.)

Hur gör man?


Det jag håller på med är:
1) Ett perl-script startas och utför diverse konster, (exakt vad är lite hemligt.) Sedan visar scriptet en HTML-sida.
2) På denna HTML-sida (som innehåller menyer mm) ska innehållet i en variabel visas. <-- Därav min fråga ovan.
3) I ett formulär-fält på samma HTML-sida skriver man in ett namn som perl-scriptet tar hand om. (Vad som händer sedan är oviktigt eftersom detta är löst.)

edit: Ändrade rubriken eftersom problemet är löst.

Postat: 12 juli 2006, 15:48:41
av JimmyAndersson
¿nada?

Postat: 12 juli 2006, 16:28:37
av Macce
Du skriver lite luddigt, vet inte om det beror på att du vill hålla scriptets funktion hemligt eller något...

Är det perl-skriptet som skriver ut html-sidan, eller skickas man från perl-skriptet till html-sidan?

Postat: 12 juli 2006, 17:59:46
av sodjan
Vet du hur du skriver ut något överhuvudtagt till en browser ?
Går perl scriptet som en CGI ?

I princip är det väl bara att lägga in variablen (substituera) på
lämpligt sätt.

Du lär väl öppna en kanal/channel tillbaka till browern från
ditt script, och sedan använder man de vanliga PRINT och liknande
för att "skriva" till browsern. OCh alltså är det ingen skillnad att
skriva en "variabel" till en browser som till något annat...

Som sagt, det är lite otydligt vad du igentligen har problem med...

Postat: 12 juli 2006, 19:49:32
av JimmyAndersson
Oj, missade jag så mycket. :oops:

Jag tar det från början:
Först går man in på sidan, t.ex sajt.se/index.html
En länk går till perl-scriptet, som förresten är en CGI-fil.
Scriptet börjar med att öppna en HTML-sida (som alltså är en separat fil).

HTML-sidan är ett 'skal' till min administrationsdel för mina sajter.
På sidan finns formulärfält och kryssrutor där resultatet läses av i perl-scriptet. Efter detta bearbetas detta i perl-scriptet. Hit fungerar det bra.

Men: Perl-scriptet ska skicka tillbaka information till HTML-sidan. Det är detta jag behöver hjälp med.


"Vet du hur du skriver ut något överhuvudtagt till en browser ?"
Jag har gjort det förrut, men nu minns jag inte hur. Därav denna tråd.


Att skicka något (som skrivits i ett formulär på en HTML-sida) till ett perl-script var däremot inga problem:
I perl-scriptet gjorde jag såhär:

sub hamta_form
{
read(STDIN, $data, $ENV{'CONTENT_LENGTH'});
osv..

och fick då innehållet från formuläret i $data.


Om ni undrar varför man först kör perl-scriptet som öppnar html-sidan så kan jag berätta att jag gjort så bl.a för att lagra data om när, hur och av vem sidan öppnades. Jag vill ha det på detta vis. Men det påverkar ju inte den egentliga frågan, som alltså är:

Hur gör man ett perl-script som visar en variabels innehåll på en HTML-sida.

Postat: 12 juli 2006, 20:26:36
av Macce
Mitt tips: PHP.

Postat: 12 juli 2006, 21:34:10
av JimmyAndersson
Sant. Du råkar inte ha lust att skriva om 60kB perl-kod och 76kB HTML-kod till PHP ? :D

Postat: 12 juli 2006, 21:38:53
av Zyxel615
Oj oj oj... är det så illa? Det är inte kul när man har gjort något som nääästan går och så upptäcker man att det fanns ett mycket enklare sätt att göra det på :evil:

Postat: 12 juli 2006, 21:53:38
av jack
PHP är ju mycket skojigare för sådana här saker. Enligt mig ett av de roligaste språken.

Som tur är så är ju språken väldigt lika, fast PHP är enklare. De första versionerna av PHP byggde ju på några Perl-script.


http://php.istheshit.net/ :)

Postat: 12 juli 2006, 22:08:59
av JimmyAndersson
Kul länk. :D

När jag gjorde perl-scripten så kunde jag inte PHP och mitt webhotell stödde det inte, så valet var ganska lätt.. :)
Jag kan visserligen inte PHP särskillt bra nu heller, men nu har jag åtminstone ett webhotell som klarar det, så det finns inga hinder för att lära sig mer.

Annars gillar jag perl. Tycker det är lätt att göra välstrukturerad kod. PHP och HTML blir lätt rörigt efter ett tag, oavsett hur mycket kommentarer och stycken man gör. Tycker jag... :)

Postat: 12 juli 2006, 22:14:44
av jack
Håller fullständigt med dig. Det är skitsvårt att skriva PHP/HTML som är enkel att överblicka.

Däremot har jag skrivit Perl-script som jag gärna skulle rama in och sätta på väggen :)

Postat: 12 juli 2006, 23:06:38
av JimmyAndersson
:)

Hittade ett annat forum där någon hade samma problem:

X: I want to send my Perl variables to an existing HTML file...filling in the cells in an already existing table.

Y: HTML on its own cannot do anything like this. Its like asking a newspaper to play a radio station. You could use a html file as a template, then let Perl read in the template, replace the values, and output the result.

Z: That's exactly what I've done in the past. I set up a HTML template with placeholders where I wanted to insert data. The Perl program read the HTML file and when it came to a placeholder, it inserted the proper value. Placeholders can look something like ****NAME_GOES_HERE***.


Det påminner starkt om hur jag gjorde förr. Tyvärr kommer jag inte ihåg hur perl-koden ska vara för detta.

Postat: 12 juli 2006, 23:19:35
av sodjan
> Scriptet börjar med att öppna en HTML-sida (som alltså är en separat fil).

Hur menar du ?
Att din perl kod öppnar en (lokal) fil som bara inehåller HTML kod ?

> HTML-sidan är ett 'skal' till min administrationsdel för mina sajter.
> På sidan finns formulärfält och kryssrutor där resultatet läses av i perl-scriptet.

Stopp stopp...
Hur hamnade "filen" ovan i browsern ??? Du saknar ett steg här.

> Efter detta bearbetas detta i perl-scriptet. Hit fungerar det bra.

OK, nu har alltså användaren klickat en knapp och formuläret (eller
igentligen variablerna/datat i formuläret) har skickats tillbaka till servern.

> Men: Perl-scriptet ska skicka tillbaka information till HTML-sidan.

Det går inte, oavsett om du kör perl, PHP eller något annat.
Du måste generera om sidan (eller framen) med den nya datat.
Alltså göra om precis samma operation som du gjorde i det steg
som du inte hade med i din beskrivning, alltså där ditt perl script
skickar HTML filen till browsern, men nu med det nya datat
istället för det som fanns där tidigare.

Postat: 12 juli 2006, 23:38:18
av JimmyAndersson
>> Scriptet börjar med att öppna en HTML-sida (som alltså är en separat fil).

> Hur menar du ?
> Att din perl kod öppnar en (lokal) fil som bara inehåller HTML kod ?

Exakt. Några rader i script.cgi öppnar filen main_layout.html
För att göra detta använder jag:

$fsize1 = (-s "$html_loc/main_layout.html");
open (RVF, "$html_loc/main_layout.html");
read(RVF,$ml,$fsize1);
close (RVF);


> OK, nu har alltså användaren klickat en knapp och formuläret (eller
> igentligen variablerna/datat i formuläret) har skickats tillbaka till servern.

Jepp.


>> Men: Perl-scriptet ska skicka tillbaka information till HTML-sidan.

> Det går inte, oavsett om du kör perl, PHP eller något annat.

Detta är nog första gången jag säger emot dig, :) men ..jo det går.

Gjorde några exempel i HTML för att visa:
Detta använder ett formulär-fält.
En liknande variant som ovan.
Detta använder ett lager som uppdateras

Nu är ju resten av sidorna tomma, men det är alltså bara det som står i formulär-fältet eller lagret som uppdateras. Resten är statiskt.

De exempel som använder formulär har även en datumkoll, så de fungerar bara mellan den 12 och 15 i varje månad. (Använde dessa i ett annat sammanhang.)

Postat: 12 juli 2006, 23:53:30
av sodjan
> Gjorde några exempel i HTML för att visa:

Dessa exempel har inte att smack att göra med vad du har talat om hittills !!

Rätta mig om jag har fel, men snurrat inte ditt perl script på *SERVERN* ??

De sidor du visade hade vanlig javascript kod som snurrar lokalt på *BROWSERN*.

Två helt olika saker...

Mitt tidigare svar kvarstår.