2015-10-16 130 views
0

周圍搜索後,我發現這個命令exec($^X, $0, @ARGV);其重新啓動一個Perl腳本。但是,當我這樣做時,我的腳本正常運行,但具有預期輸出的前面。我想知道這是否是重新啓動我的perl cgi腳本的正確方法。重新啓動的Perl CGI腳本

編輯:

elsif (defined param("again")){ 
    exec($^X, $0, @ARGV); 
    exit; 
} 

當腳本重新啓動它的應該打印My guess is: 50但它打印Content-Type: text/html My guess is: 50

+1

沒有更多的信息,就很難說了。但可能不會。回溯一下並解釋你的問題以及你作爲解決方案所嘗試的內容,並且我們可能會給出答案。參見[問] – Sobrique

+0

@Sobrique我的問題是重新啓動腳本,我試圖解決的辦法是'EXEC($^X,$ 0 @ARGV);' – gettingthere

+0

這聽起來極像是一個[XY問題(HTTP:// meta.stackexchange.com/questions/66377/what-is-the-xy-problem) - 重新啓動這樣的腳本沒有什麼意義,尤其是在產生腳本的'cgi'上下文中通過你的httpd。 – Sobrique

回答

2

你的輸出,它被用作標題(不顯示)的第一次,第二次作爲內容的一部分。

添加參數@ARGV,這樣就可以檢查腳本是否已經重新啓動,因此,頭不應該再被髮送。

編輯:我剛纔看到了什麼是您給這個腳本用途。在網絡遊戲環境中,刷新,重定向或僅提供鏈接或表單提交以再次運行腳本當然更可取。同樣的HTTP連接內

解決方案這樣的,在那裏你重新啓動腳本(或運行其他)而作出的主力或監視腳本的意義,例如保持內存佔用低。但它是一種非常罕見的動物。