Perl中的SAY DIGITS函数不会从包含Perl中执行的命令行的STDOUT结果的变量中读取,但是当我为变量赋值时它会起作用。
#!/usr/bin/perl
use strict;
my $Hour = qx(date "+%I");
print "SAY DIGITS $Hour \"\"\n";
extensions.conf文件:
exten => 222,1,Answer()
exten => 222,2,AGI(time.sh)
exten => 222,3,Hangup()
代码应告诉来电者当前时间。就这么简单。
答案 0 :(得分:2)
qx(...)
的返回值(以及反引号和readpipe
通常会附加一个换行符,在下游使用它之前,您通常希望chomp
该值。
my $Hour = qx(date "+%I");
chomp($Hour);
print "SAY DIGITS $Hour \"\"\n";
答案 1 :(得分:0)
您可能希望在CPAN上使用Lingua::ENG::Numbers模块。
Lingua :: ENG :: Numbers将数值转换为相应的英文字符串。
以下是如何使用它的示例:
#!/usr/bin/perl
use Lingua::ENG::Numbers;
my $hour = 0 + qx(date "+%I");
my $minute = 0 + qx(date "+%M");
my $hour_str = "";
my $minute_str = "";
if(my $o = Lingua::ENG::Numbers->new($hour)) {
$hour_str = $o->get_string;
};
if(my $o = Lingua::ENG::Numbers->new($minute)) {
$minute_str = $o->get_string;
};
print "It's $hour_str $minute_str";
您将获得类似It's Seven Seventeen
的输出(这是我的时区上的时间)。
如果您需要从中获取音频,可以通过espeak管道传输,这是一种用于英语和其他语言的语音合成器。
更新:啊,我明白了,所以SAY DIGITS
已在Asterisk实施。