Я работал с очень старой системой Solaris и не в состоянии добавлять больше модулей, чтобы сделать мою жизнь проще, и я работаю с несколькими сценариями, которые используют различные параметры командной строки.
Большая часть того, над чем я работаю, на самом деле работает, но я придумываю кое-что, что, кажется, просто не могу обойти.
Я беру данные с лентыиспользуя команду "dd", и мне нужно захватить вывод, чтобы убедиться, что у меня возникают какие-либо ошибки чтения с ленты.
("comment ()" - подпрограмма, которую я уже создал)
#!/usr/local/bin/perl
$| = 1; #disable output buffering
$tarfile = '/mnt/test/tmp/12345.tar';
@tapeinfo = `dd if=/dev/rmt/1cbn of=$tarfile`;
foreach(@tapeinfo){
#Check to ensure that we're not getting read errors
$result = index($_,'read: I/O error');
if ($result < 0){
#No read error, log result
comment($_);
} else {
# read error, terminate
comment("Terminating due to tape read error : $_");
last; #exit loop if error is found
}
}
#terminate with logging
Когда скрипт запускается, я вижу, что "123 + 0 записей в, 123 + 0 записей в выходных" публикуется на экране терминала, но мой цикл, в котором @tapeinfo, похоже, вообще не проверяется.Я не получаю ни ошибку, ни регистрацию информации.
Я что-то упускаю здесь что-то ужасно простое ??