2010-08-05 57 views
6

以下PHP調用的Perl等價物是什麼?

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

任何幫助將不勝感激。

回答

6

環境變量是一系列隱藏的值是Web服務器發送到您運行的每個CGI。您的CGI可以解析它們並使用它們發送的數據。環境變量存儲在名爲%ENV的散列中。

例如,$ENV{'HTTP_HOST'}將給你的服務器的主機名

#!/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>"; 

欲瞭解更多詳情,請參閱CGI Environmental variables

2

你的工作環境是什麼?如果它的CGI腳本嘗試:

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

這很好,謝謝。你碰巧知道PHP函數file_get_contents()的Perl等價物嗎?我一直在玩弄開放,但無法像file_get_contents()那樣通過不同的服務器訪問頁面。 – dandemeyere 2010-08-05 08:06:35

+0

@dandemeyere:我通常做的是:打開FILE,$ data = join'',然後關閉FILE – hlynur 2010-08-05 08:15:06

+0

hlynul關於file_get_contents的回答是錯誤的。 dandemeyere問(並有問題的答案)在http://stackoverflow.com/questions/3413151 – 2010-08-05 10:33:45

13

的另一種方式,比可變environement,是用CGI:


use strict; 
use warnings; 
use CGI ; 

print CGI->new->url(); 

此外,它也提供了大量的CGI操縱等 如訪問參數發送到您的cgi,餅乾等...

4

或者你可以做到這一點,使用變量$ 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

完美:)工程很棒 – 2014-05-30 23:42:21

相關問題