以下Perl代碼不打開預期的網址:爲什麼Perl會在系統調用中用%23替換#?
$word="中文";
my $url="http://www.google.com/#source=hp&q=" . $word;
print $url . "\n";
system("open \"$url\"");
它打開谷歌瀏覽器與URL:中
http://www.google.com/%23source=hp&q=中文
代替
http://www.google.com/#source=hp&q=中文
如果我更換系統請致電
system("echo \"$url\"");
它會打印正確的URL http://www.google.com/#source=hp&q=中文
,它會在粘貼到Google Chrome瀏覽器的網址字段時起作用。
這是爲什麼?如何解決它?
[編輯20年8月14日:30CDT]
看來問題是open
。沒有
open "http://www.google.com/#source=hp&q=中文"
open 'http://www.google.com/#source=hp&q=中文'
open http://www.google.com/#source=hp&q=中文
的作品。他們都錯誤地將#
替換爲%23
。有趣的是,如果我只放1個字符的查詢,即用 「中」,而不是 「中文」,我發現這兩個
open "http://www.google.com/#source=hp&q=中"
open 'http://www.google.com/#source=hp&q=中'
工作,但不
open http://www.google.com/#source=hp&q=中
我使用的是Mac OS X 10.6。
您是否嘗試過在系統調用中使用單引號而不是雙引號?像這樣: 'system(「open'$ url'」);' – thelsdj
使用'沒有工作。 –
您是否嘗試過直接從shell運行'open'命令?這個問題可能並不是每個人都知道的,但是通過open和or chrome如何處理來自命令行的URL。 – thelsdj