システムへの「バックティック」呼び出しを使用して実際にperlスクリプトを実行する方法が好きではありません。実際にフォーク(または同等のもの)を使用して、より制御された方法でプログラムを実行することをお勧めします。
use POSIX ":sys_wait_h";
my $pid = fork();
if($pid) { # on the parent proc, $pid will point to the child
waitpid($pid); # wait for the child to finish
} else { # this is the child, where we want to run the telnet
exec 'some_script.pl'; # this child will now "become" some_script.pl
}
some_script.plが実際にどのように機能するかわからないので、ここでこれ以上お手伝いすることはできません。ただし、たとえば、some_script.plのコマンドラインに「quit」と出力するだけの場合は、別の質問で提案されているようにIPC::Open2を使用できます。次のようなことをします:
use IPC::Open2;
$pid = open2(\*CHLD_OUT, \*CHLD_IN, 'some_script.pl');
print CHLD_IN "quit\n";
waitpid( $pid, 0 );
my $child_exit_status = $? >> 8;
これを少し調整する必要がありますが、アイデアは問題を解決するはずです。