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

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
JimmyAndersson
Inlägg: 26568
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

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

Inlägg 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.
Senast redigerad av JimmyAndersson 13 juli 2006, 22:49:22, redigerad totalt 1 gång.
Användarvisningsbild
JimmyAndersson
Inlägg: 26568
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

¿nada?
Användarvisningsbild
Macce
Inlägg: 4301
Blev medlem: 29 maj 2003, 16:40:58

Inlägg 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?
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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...
Användarvisningsbild
JimmyAndersson
Inlägg: 26568
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg 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.
Användarvisningsbild
Macce
Inlägg: 4301
Blev medlem: 29 maj 2003, 16:40:58

Inlägg av Macce »

Mitt tips: PHP.
Användarvisningsbild
JimmyAndersson
Inlägg: 26568
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Sant. Du råkar inte ha lust att skriva om 60kB perl-kod och 76kB HTML-kod till PHP ? :D
Användarvisningsbild
Zyxel615
EF Sponsor
Inlägg: 1839
Blev medlem: 9 november 2005, 21:20:43
Ort: Kiruna

Inlägg 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:
Användarvisningsbild
jack
EF Sponsor
Inlägg: 2059
Blev medlem: 5 oktober 2004, 17:32:27

Inlägg 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/ :)
Användarvisningsbild
JimmyAndersson
Inlägg: 26568
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg 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... :)
Användarvisningsbild
jack
EF Sponsor
Inlägg: 2059
Blev medlem: 5 oktober 2004, 17:32:27

Inlägg 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 :)
Användarvisningsbild
JimmyAndersson
Inlägg: 26568
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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.
Användarvisningsbild
JimmyAndersson
Inlägg: 26568
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg 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.)
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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.
Skriv svar