Perl Script для чтения файла построчно и запуска команды в каждой строке - PullRequest
2 голосов
/ 20 июня 2011

Я нашел этот Perl-скрипт здесь , который, кажется, будет работать для моих целей. Он открывает текстовый файл Unicode и читает каждую строку, чтобы можно было запустить команду. Но я не могу понять, как выполнить определенную команду ICU в каждой строке. Кто-нибудь может мне помочь? Я получаю сообщение об ошибке (largefile - это имя скрипта): синтаксическая ошибка в ./largefile строке 11, рядом с "/." Шаблон поиска не заканчивается в строке ./largefile 11.

#!/usr/bin/perl

use strict;
use warnings;

my $file = 'test.txt';
open my $info, $file or die "Could not open $file: $!";

while( my $line = <$info>)  {      
do
LD_LIBRARY_PATH=icu/source/lib/ ./a.out "$line" >> newtext.txt
done
}

close $info;

В основном я хочу открыть большой текстовый файл и запустить команду (которая обычно запускается из командной строки ... Я думаю, как я называю это в скрипте perl, это проблема, но я не знаю, как это исправить it) "LD_LIBRARY_PATH = icu / source / lib / ./a.out" $ line ">> newtext.txt" в каждой строке, чтобы затем "newtext.txt" заполнялся всеми строками после того, как они были обработаны скрипт. Часть отделения интенсивной терапии - это слова для кхмеров.

Любая помощь будет высоко ценится! Я не большой программист ... Спасибо!

Ответы [ 2 ]

1 голос
/ 20 июня 2011

Для выполнения команд терминала, команда должна быть в system (), следовательно, изменить на

system("LD_LIBRARY_PATH=icu/source/lib/ ./a.out $line >> newtext.txt");
1 голос
/ 20 июня 2011

Пробовали ли вы обратные пометки:

while (my $line = <$info>) {
  `LD_LIBRARY_PATH=icu/source/lib/ ./a.out "$line" >> newtext.txt`
  last if $. == 2;
}
...