PDA

Просмотр полной версии : Проблема с чтение данных с Perl скипта


Jomei
10.01.2011, 12:02
Здраствуйте у меня возникла небольшая проблемка с AS 3.0 + Perl.
В общем ActionScript скрипт при обращении в Perl скрипт должен выводить значение некой переменной которая находится в Perl скрипте. Код на AS 3.0 написан правильно, я это понял когда извлекал значение переменной с .txt файла и что самое удивительно с .php скрипта. В общем с .txt и .php всё отлично работает, а вот с Perl выводит значение unfined. Щас объясню подробнее с примерами:
Пример с простым текстовым файлом (TXT):
Основной код AS 3.0:
package {
import flash.display.*;
import flash.events.*;
import flash.net.*;

public class URLVariablesExample extends MovieClip {

public function URLVariablesExample() {
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("index.txt");
loader.dataFormat=URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, handleComplete);
loader.load(request);
}

public function handleComplete(event:Event):void {
var loader:URLLoader = URLLoader(event.target);
trace("someText = " + loader.data.someText);
}
}
}

Код текстового файла (TXT):
someText=This is text from TXT file

При компиляции AS 3.0 скрипта, в окне Output нам выдастся текст: someText = This is text from TXT file
С TXT работает!

Пример с PHP скриптом:
Тот же код AS 3.0 только меняем в нем путь к PHP скрипту на сервере:
package {
import flash.display.*;
import flash.events.*;
import flash.net.*;

public class URLVariablesExample extends MovieClip {

public function URLVariablesExample() {
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("http://localhost/index.php");
loader.dataFormat=URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, handleComplete);
loader.load(request);
}

public function handleComplete(event:Event):void {
var loader:URLLoader = URLLoader(event.target);
trace("someText = " + loader.data.someText);
}
}
}

Код PHP скрипта:
<?php
$otherText = "This is text from PHP script";
echo "someText=$otherText";
?>

При компиляции AS 3.0 скрипта, в окне Output нам выдастся текст: someText = This is text from PHP file
С PHP работает!

И наконец-то пример с Perl скриптом:
Тот же код AS 3.0 только меняем в нем путь к Perl скрипту на сервере:
package {
import flash.display.*;
import flash.events.*;
import flash.net.*;

public class URLVariablesExample extends MovieClip {

public function URLVariablesExample() {
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("http://localhost/cgi-bin/index.pl");
loader.dataFormat=URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, handleComplete);
loader.load(request);
}

public function handleComplete(event:Event):void {
var loader:URLLoader = URLLoader(event.target);
trace("someText = " + loader.data.someText);
}
}
}

Код Perl скрипта:
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
$otherText = "This is text from Perl script";
print "someText=$otherText";

При компиляции AS 3.0 скрипта, в окне Output нам выдастся текст: someText = unfined
С Perl не работает!

Гуру AS 3.0/Perl объясните в чем ошибка?
Я предполагаю что, что-то с Perl скриптом возможно не так, но что? При вводе адресса (http://localhost/cgi-bin/index.pl) в браузере, пишет что всё хорошо:
someText=This is text from Perl script
И с PHP так же само, всё хорошо. Но почему флешка выводит unfined только с Perl скриптом, а не текст: This is text from Perl script?

leofit
10.01.2011, 16:16
Честно говоря я делек от PERL`a, но разве print "Content-type: text/plain\n\n"; не выведет строку напрямую в браузер? Насколько я понимаю, Вы хотите отправить http header? В том же пхп это делается через header('...'), думается и перле должно быть что то похожее, попробуйте просто убрать эту строку

Jomei
10.01.2011, 20:46
Loefit нет, эта строка там и должна быть, если её убрать в любом случае выдаст ошибку, я проверял.
В общем я уже разобрался в чем дело, вся информация по Perl здесь изложена верно, просто походу надо было перезагрузить сервак, вот и всё... Но как по мне всё равно странная штука получилась, PHP работало и без перезагрузки, а с Perl проблемы, в общем перезагрузил всё, по новой запустил и работает.