0

私は最近Perlを学び始めたばかりなので、この言語に関しては技術的な語彙が不足していることをお許しください。

mpg321を使用してオーディオを再生するPerlスクリプトがあります。私はコマンドを持っています:

if(song is not being played)
{
     system("mpg321 song.mp3 &");
}

すでに再生されている曲があるかどうかを確認できるかどうか知りたかったのです。mpg321は、曲の再生が完了すると端末に出力します。私の一連の考えから、出力の端末を「監視」できるかどうかを信じるようになりました。

[0:00]song.mp3のデコードが終了しました

どういうわけか、それをifステートメントに入れることができます。これを行うためのより簡単な方法がある場合、または私が言及したこの方法が可能である場合、私は助けに大いに感謝するでしょう!

4

1 に答える 1

0

実行パイプを開いて、そのパイプからの出力を次のように監視できます。

my $pipe;
open $pipe, "mpg321 song.mp3 |";
while (my $line = <$pipe> {
    # check if mpg321 printed something...
}

mpg321ただし、これは、コンソールのバッファリングを無効にするよう説得できる場合にのみ機能します。

于 2013-02-04T06:29:14.257 に答える