2016-04-23 12 views
1

私の問題はthis答えに記載されているものと同じです。私は、コードを理解しようとしてきた、これは私が学んだことです:Darwin Streaming Serverのインストールに問題がありますos x

それはファイルparse_xml.cgiに失敗している、という名前のファイルからは(に位置メッセージを、メッセージ(return $message{$name})を取得しようとしますhtml_enディレクトリ)。 $メッセージ値ファイル方法GetMessageHashからadminprotocol-lib.pl来る:$ENV{"QTSSADMINSERVER_EN_MESSAGEHASH"}がファイルにstreamingadminserver.pl設定されている

sub GetMessageHash 
{ 
    return $ENV{"QTSSADMINSERVER_EN_MESSAGEHASH"} 
} 

$ENV{"QTSSADMINSERVER_EN_MESSAGEHASH"} = $messages{"en"} 

を私は知りません私が$messages{"en"}が正しい値を持っているのを見て(私がprint($messages{"en"}{'SunStr'}私は値 "Sun"を得ています))何が問題になりうるか分かりません。

しかし、私がしようとするとprint($ENV{"QTSSADMINSERVER_EN_MESSAGEHASH"}{'SunStr'}は何も得られません。

$ENV{"HELLO"} = "hello"; 
print($ENV{"HELLO"}); 

、それは罰金、版画「ハロー」を作品:$ENV{"QTSSADMINSERVER_EN_MESSAGEHASH"}私はこの単純な例を試してみましたが、それがうまく働いた

に設定されていないように思えます。

問題の原因は何ですか?

+0

ダーウィンストリーミングサーバが機能的に廃止されました。 2007年以来、新しいリリースはありませんでした!私はそれを新しいプロジェクトに使うのは避けたい。 – duskwuff

+0

あなたが必要なもの(RTSPでmp4を流すことができるオープンソースサーバー)のための多くのオプションが見つからないため、まだ試してみる必要があります。私はそれを使用したい場合、私はいくつかのものを(そしてPerlを学ぶために時間を割いて)適応する必要があるので、私は見ていくと思います。 – venito

答えて

0

$messages{"en"}は、HashRefのように見えます。キー値ストアを保持するメモリアドレスへのポインタ。関連するメモリアドレスを印刷することもできます。

perl -le 'my $hashref = {}; print $hashref;' 
HASH(0x1548e78) 

0x1548e78はアドレスですが、同じ実行プロセス内でのみ有効です。サンプルコマンドを再実行すれば、毎回異なるアドレスが得られます。

HASH(0x1548e78)は、実際に格納された値を人間が読める形式で表したものです。 $hashref2="HASH(0x1548e78)";を設定すると、人間が読める文字列のコピーだけが実際の参照を作成することはありません。

両方のスクリプトでprint $ENV{"QTSSADMINSERVER_EN_MESSAGEHASH"}を使用すると、この理論を簡単に証明できます。

Data::Dumperは、典型的には、参照ハッシュ(メモリ位置)の内容を表示するために使用される:

use Data::Dumper; 
print Dumper($messages{"en"}); 
# or 
print Dumper($ENV{"QTSSADMINSERVER_EN_MESSAGEHASH"}); 

ポインタ/参照は、両方のスクリプトに間接参照することができればこれも表示されます。

あなたの問題の解決策は、おそらくハッシュリファレンスの代わりに値を渡して:

$ENV{"QTSSADMINSERVER_EN_SUN"} = $messages{"en"}->{SunStr}; 

ベストプラクティスを使用している - >両方のキーの間に。キーの "または"の引用符もoptional if the key is a plain wordです。

しかし、すべての環境変数を渡すのは間違っています。彼らはOSXについてのリファレンスを保持することができないかもしれない(私は知らない)。文字列の格納領域をインクルードファイルに抽出し、requireでロードすることができます。

Perlの詳細は、http://www.perlmaven.com/またはhttp://learn.perl.orgを参照してください。

関連する問題