2014-04-25 4 views
1

Perl의 SAY DIGITS 함수는 Perl에서 실행 된 명령 줄의 STDOUT 결과를 포함하는 변수에서 읽지 않지만 모든 값을 할당 할 때 작동합니다 변수에.AGI 함수 SAY DIGITS를 사용하고 Perl의 변수에서 읽는 방법

#!/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() 

. 그만큼 간단합니다.

답변

2

qx(...) (그리고 역 따옴표와 readpipe의 반환 값은 보통에 추가 줄 바꿈을 가지고, 당신은 일반적으로 다운 스트림을 사용하기 전에 그 값을 chomp 싶다.

my $Hour = qx(date "+%I"); 
chomp($Hour); 

print "SAY DIGITS $Hour \"\"\n"; 
+0

감사합니다. @mob은 현재 정상적으로 작동합니다. –

0

당신은 Lingua::ENG::Numbers을 사용할 수 있습니다 CPAN에 모듈

링구아 :: ENG :: 숫자의 영어 문자열 등가물에 숫자 값을 변환 여기

이 그것을 사용하는 방법의 예는 다음과 같습니다..

#!/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에 구현되어 있습니다.

+0

예 SAY DiGITS는 이미 AGI의 기능입니다. 어쨌든 당신의 도움에 감사드립니다. –