Macos Darwin流媒体服务器安装问题os x
我的问题与回答中提到的问题相同。我一直在努力理解代码,这就是我学到的: 它在文件parse_xml.cgi中失败,尝试从名为messages的文件(位于html_en目录中)获取消息(Macos Darwin流媒体服务器安装问题os x,macos,perl,darwin,dss,Macos,Perl,Darwin,Dss,我的问题与回答中提到的问题相同。我一直在努力理解代码,这就是我学到的: 它在文件parse_xml.cgi中失败,尝试从名为messages的文件(位于html_en目录中)获取消息(return$message{$name})。 $messages值来自文件adminprotocol-lib.pl中的方法GetMessageHash: $ENV{“QTSSADMINSERVER_EN_MESSAGEHASH”}在streamingadminserver.pl文件中设置: 我对Perl一无所知,
return$message{$name}
)。
$messages值来自文件adminprotocol-lib.pl中的方法GetMessageHash
:
$ENV{“QTSSADMINSERVER_EN_MESSAGEHASH”}
在streamingadminserver.pl文件中设置:
我对Perl一无所知,所以我不知道问题出在哪里,因为我看到的$messages{“en”}
的值是正确的(如果我打印print($messages{“en”}{“SunStr”}
我得到的值是“Sun”))
但是,如果我尝试执行打印($ENV{“qtsAdminServer_EN_MESSAGEHASH”}{'SunStr'}
我什么也得不到。似乎$ENV{“qtsAdminServer_EN_MESSAGEHASH”}
没有设置
我尝试了这个简单的例子,效果很好:
$ENV{"HELLO"} = "hello";
print($ENV{"HELLO"});
它工作正常,打印“你好”
知道问题可能是什么吗?看起来像是
$messages{“en”}
是一个:指向保存键值存储的某个内存地址的指针。您甚至可以打印相关的内存地址:
perl -le 'my $hashref = {}; print $hashref;'
HASH(0x1548e78)
0x1548e78是地址,但它仅在同一个正在运行的进程中有效。重新运行sample命令,每次将获得不同的地址
散列(0x1548e78)也是真实存储值的可读表示形式。设置$hashref2=“散列(0x1548e78)”;
不会创建真实引用,只会创建人类可读字符串的副本
您可以在两个脚本中使用print$ENV{“QTSSADMINSERVER_EN_MESSAGEHASH”}
轻松证明这一理论
通常用于显示引用哈希的内容(内存位置):
这还将显示指针/引用是否可以在两个脚本中取消引用
您的问题的解决方案可能是传递值而不是HashRef:
$ENV{"QTSSADMINSERVER_EN_SUN"} = $messages{"en"}->{SunStr};
最佳实践是在两个键之间使用->键。键的“或”引号也可以
但是通过环境变量传递所有内容感觉是错误的。它们可能无法在OSX上保存引用(我不知道)。您可能希望将字符串存储提取到包含文件中,然后通过加载
有关Perl的更多信息,请参见或。看起来像
$messages{“en”}
是一个:指向保存键值存储的某个内存地址的指针。您甚至可以打印相关的内存地址:
perl -le 'my $hashref = {}; print $hashref;'
HASH(0x1548e78)
0x1548e78是地址,但它仅在同一个正在运行的进程中有效。重新运行sample命令,每次将获得不同的地址
散列(0x1548e78)也是真实存储值的可读表示形式。设置$hashref2=“散列(0x1548e78)”;
不会创建真实引用,只会创建人类可读字符串的副本
您可以在两个脚本中使用print$ENV{“QTSSADMINSERVER_EN_MESSAGEHASH”}
轻松证明这一理论
通常用于显示引用哈希的内容(内存位置):
这还将显示指针/引用是否可以在两个脚本中取消引用
您的问题的解决方案可能是传递值而不是HashRef:
$ENV{"QTSSADMINSERVER_EN_SUN"} = $messages{"en"}->{SunStr};
最佳实践是在两个键之间使用->键。键的“或”引号也可以
但是通过环境变量传递所有内容感觉是错误的。它们可能无法在OSX上保存引用(我不知道)。您可能希望将字符串存储提取到包含文件中,然后通过加载
有关Perl的更多信息,请参阅或。修复代码:
$$ENV{"QTSSADMINSERVER_EN_MESSAGEHASH"} = $messages{"en"};
sub GetMessageHash
{
return $$ENV{"QTSSADMINSERVER_EN_MESSAGEHASH"};
}
参考:
修复代码:
$$ENV{"QTSSADMINSERVER_EN_MESSAGEHASH"} = $messages{"en"};
sub GetMessageHash
{
return $$ENV{"QTSSADMINSERVER_EN_MESSAGEHASH"};
}
参考:
Darwin Streaming Server在功能上已经过时。自2007年以来,没有新版本!我会避免在任何新项目中使用它。你是对的,我仍然需要尝试,因为我还没有找到很多我需要的选项(一个能够通过RTSP传输mp4的开源服务器)。如果我想使用它,我需要修改一些东西(并花一些时间学习Perl)所以我想我会继续寻找。Darwin流媒体服务器在功能上已经过时了。自2007年以来没有新的版本!我会避免在任何新项目中使用它。你是对的,我仍然需要尝试,因为我没有找到很多我需要的选项(一个能够通过RTSP流媒体传输mp4的开源服务器).如果我想使用它,我需要修改一些东西(并花一些时间学习Perl),所以我想我会继续寻找。