2010-08-05 22 views
6

¿Cuál es el equivalente de Perl para las siguientes llamadas PHP?

$_SERVER["HTTP_HOST"] 
$_SERVER["REQUEST_URI"] 

Cualquier ayuda sería muy apreciada.

Respuesta

6

Las variables de entorno son una serie de valores ocultos que el servidor web envía a todos los CGI se ejecuta. Su CGI puede analizarlos y usar los datos que envían. Las variables de entorno se almacenan en un hash llamado % ENV.

Por ejemplo, $ENV{'HTTP_HOST'} dará nombre de host de su servidor.

#!/usr/bin/perl 

print "Content-type:text/html\n\n"; 
print <<EndOfHTML; 
<html><head><title>Print Environment</title></head> 
<body> 
EndOfHTML 

foreach my $key (sort(keys %ENV)) { 
    print "$key = $ENV{$key}<br>\n"; 
} 

print "</body></html>"; 

Para más detalles ver CGI Environmental variables

2

¿Cuál es el entorno en el que está trabajando? Si se trata de CGI script de prueba:

use Data::Dumper; 
print Dumper \%ENV; 
+0

Esto funcionó muy bien, gracias. ¿Conoces el equivalente de Perl de la función PHP file_get_contents() también? He estado jugando con open pero no puedo acceder a una página en un servidor diferente al modo en que lo hace file_get_contents(). – dandemeyere

+0

@dandemeyere: Lo que solía hacer era: abrir FILE, $ data = join '', luego cerrar FILE – hlynur

+0

La respuesta de hlynul con respecto a file_get_contents es errónea. Dandemeyere preguntó (y tenía una respuesta para esa pregunta) en http://stackoverflow.com/questions/3413151 –

13

Otra forma, que environement variables, es el uso de CGI:


use strict; 
use warnings; 
use CGI ; 

print CGI->new->url(); 

Por otra parte, también ofrece una gran cantidad de manipulación CGI tales como accediendo a params enviando a su cgi, cookies etc ...

4

O puede hacer esto y usa la variable $ page_url.

my $page_url = 'http'; 
$page_url.='s' if $ENV{HTTPS}; 
$page_url.='://'; 
if($ENV{SERVER_PORT}!=80) 
{ 
    $page_url.="$ENV{SERVER_NAME}:$ENV{SERVER_PORT}$ENV{REQUEST_URI}"; 
} 
else 
{ 
    $page_url.=$ENV{SERVER_NAME}.$ENV{REQUEST_URI}; 
} 
+0

PERFECTION :) Funciona muy bien –

Cuestiones relacionadas