rsh $machine -l $user "dir $directory"
должно работать нормально.
попробуйте так:
my @files = qx(rsh $machine -l $user "dir $directory");
qx - системный вызов, который возвращает результаты в виде массива, по одной записи в строке.
Просто из любопытства, можете ли вы дать ссылку на запутанный пример?