PDA

Visualizza la versione completa : includere un file


sbirro
05-03-2009, 10:46
ciao,
possibile in perl includere il contenuto di un file da un altro file.. provo a spiegarmi:
ho a.pl e b.pl

da b.pl vorrei includere il contenuto di a.pl

:bh:

in php c' la funzione include(percorso_file) o require(percorso_file);

grazie!!!!

MARTEDI
05-03-2009, 14:44
require "percorso_file";

sbirro
05-03-2009, 14:54
mannaggia.. ho provato mettendo

require "nome_file";

o

require "percorso assoluto nome_file";

o

require "./nome_file";

ma in ogni caso mi restituisce:

CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers.

:dh:

shishii
05-03-2009, 22:12
quel tipo di errore pu dipendere da 100 altre cose. Sei sicuro che senza il require l'errore non ci sia?

sbirro
06-03-2009, 08:49
per evitare il problema faccio una lettura del file, ma devo mettere il percorso assoluto se no non trova il file :master:

$nomefile = 'C:\htdocs\concorsi\template_superiore.txt';
open(INFO, $nomefile);
@righe = <INFO>;
close(INFO);
print @righe;

cos funge

require "C:\htdocs\concorsi\test.txt";

cos no! e mi compare l'errore
:bh:

shishii
06-03-2009, 09:42
tieni presente che leggendo il file (open) lo stesso viene utilizzato come semplice sequenza di caratteri o bit, per cui pu contenere qualunque cosa, con il require invece deve contenere necessariamente codice Perl senza errori di sintassi o altro.

Cosa contiene il file da includere?

sbirro
06-03-2009, 10:22
azzo.. questo non lo sapevo! corro a cambiare

orail file si chiama template_superiore.pl e ho messo un
print"
<h1>ciao</h1>
";

l'errore non c' + e viualizzo la pagina.. solo che mi compare

Content-Type: text/html; charset=ISO-8859-1
hello ciccio...

perch? e poi hello cicco... da dove lo prende?!?

ho una variabile
$H = new CGI; # La variabile dell'oggetto CGI deve essere $H
print $H->header;

credo che quello che scrive "Content-Type: text/html; charset=ISO-8859-1", qualcuno sa dirmi cos', perch? :master:

grazissimo

shishii
06-03-2009, 10:28
Originariamente inviato da sbirro
azzo.. questo non lo sapevo! corro a cambiare

orail file si chiama template_superiore.pl e ho messo un
print"
<h1>ciao</h1>
";

l'errore non c' + e viualizzo la pagina.. solo che mi compare

Content-Type: text/html; charset=ISO-8859-1
hello ciccio...

perch? e poi hello cicco... da dove lo prende?!?


dove prende "hello ciccio" non ne ho idea, penso che lo puoi sapere solo tu :)



ho una variabile
$H = new CGI; # La variabile dell'oggetto CGI deve essere $H
print $H->header;

credo che quello che scrive "Content-Type: text/html; charset=ISO-8859-1", qualcuno sa dirmi cos', perch? :master:

grazissimo

print $H->header scrive proprio le intestazioni HTML,ovvero la stringa che riporti, se ti compare a video vuol dire che la scrive due volte. Non che prima hai inserito un:

print "content-type: text/html\n\n";

?

sbirro
06-03-2009, 10:45
ok, ora ho commentato print $H->header;

e in test.pl ho scritto

print "
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html lang='it' xml:lang='it' xmlns='http://www.w3.org/1999/xhtml'>
<html>
<head>
<title>titolo</title>
<meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1' / >
<link type='text/css' rel='stylesheet' href='css/css_normal.css' media='screen' />
";

e funziona (non sapevo che una pagina perl deve avere gli header se no da errore!)


ora Content-Type: text/html; charset=ISO-8859-1 non c' +

ma compare ancora

hello ciccio...

dove lo prende? :bh:

shishii
06-03-2009, 10:59
Originariamente inviato da sbirro
ok, ora ho commentato print $H->header;

e in test.pl ho scritto

print "
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html lang='it' xml:lang='it' xmlns='http://www.w3.org/1999/xhtml'>
<html>
<head>
<title>titolo</title>
<meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1' / >
<link type='text/css' rel='stylesheet' href='css/css_normal.css' media='screen' />
";

e funziona (non sapevo che una pagina perl deve avere gli header se no da errore!)


ora Content-Type: text/html; charset=ISO-8859-1 non c' +

ma compare ancora

hello ciccio...

dove lo prende? :bh:

eheheheh... mi sa che hai un p di confusione... non esistono pagine Perl... esistono programmi Perl che generano pagine html e tutte le pagine html devono avere gli header, altrimenti ti becchi un bel error 500. Inoltre in questo caso l'errore non generato dall'interprete di Perl ma dal web server.

fai una ricerca in locale (funzione cerca all'interno dei files che usi) per capire dove hai scritto (e dimenticato) hello ciccio.

Loading