Я могу подтвердить, что ваш код работает изолированно. Попробуйте включить назначение заголовка в оператор if; на самом деле строка строки URL тоже. Единственная другая вещь, которая может быть связана с вами, - это то, что ваш серверный скрипт работает на машине, которая использует какую-либо оболочку прокси или tcp, которая не позволяет вам получить jQuery с google.com. Мы не можем действительно помочь вам с этими очень специфическими локальными проблемами.
Если бы я только догадался, я бы сказал, что у вас более одной среды Perl, и что ваша командная строка использует хорошую версию, где все работает, но ваш веб-сервер обращается к другой версии, одной это могло бы быть усилено таким образом, чтобы нарушить то, что вы делаете, например, то, что было предложено для использования в AppEngine . Но мои предложения, приведенные выше, основаны на идее, что код вокруг этого фрагмента может работать с переменными, которые вы используете. Похоже, что проблема возникает, хотя вокруг использования io сокетов в mod_perl .
Фрагмент программы:
$ perl -MLWP::Simple -e '
if(head("http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js")) {
print qq{<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js">
</script>};
} else {
print qq{<script type="text/javascript" src="$localPath"></script>};
}'
Выход:
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js">
</script>
Я бы также написал это так, чтобы какой-нибудь $scriptPath
был назначен либо на путь jQuery, либо на $localPath
, а затем после оператора if я бы напечатал тег script только один раз, используя теперь определенный $scriptPath
, Но это, пожалуй, только я.