Как перенаправить вывод сценария Perl в другой файл в% TEMP%? - PullRequest
0 голосов
/ 07 апреля 2011

Мне нужен сценарий Perl в Windows, который удаляет символы новой строки из файла и объединяет все строки в одну строку, а затем записывает в другой файл в каталог %temp% в системе Windows. Например, этот сценарий предназначен для удаления новых строк, создания одной строки и записи в другой файл в %TEMP%.

У меня есть скрипт, который удаляет символы новой строки, но вывод идет в STDOUT. Я не могу создать файл в %TEMP% и перенаправить вывод в этот файл.

Вот мой скрипт, который не работает:

my $inFile = $ARGV[0];
$ENV{'TEMP'} = 'C:\\TEMP';

if ($inFile eq "") {
    print "Input file is missing\n";
    print "perl file_into_one_line.pl <input fil>\n";
    exit 0;
}

open(INFILE, "< $inFile") || die "$0, FEJL: can't open $inFile: $!";
foreach (<INFILE>) {
    chomp;
    if (eof()) {    # check for end of last file
        print "$_\n";
    } else {
        open FILE, ">$ENV{'TEMP'}//temp//tst.txt" or die;
        print FILE "${_}$separator";
    }
}

close(INFILE);

Ответы [ 2 ]

1 голос
/ 07 апреля 2011

Обратите внимание, что% TEMP% - это синтаксис DOS для доступа к переменной среды. Вы можете получить доступ к значению переменных среды внутри perl через хеш% ENV, например:

$ENV{k}

где k - строковое выражение, которое дает имя переменной. Попробуйте это в командной строке Windows:

perl -e "print $ENV{'TEMP'};"

С этого момента вы сможете делать все остальное.

0 голосов
/ 08 апреля 2011

Сценарий должен быть:

my $separator = " "; # I think you should have this some where~~~

my $inFile = $ARGV[0];
$ENV{'TEMP'} = 'C:\\TEMP';

if ($inFile eq "") {
    print "Input file is missing\n";
    print "perl file_into_one_line.pl <input fil>\n";
    exit 0;
}

open(INFILE, "< $inFile") || die "$0, FEJL: can't open $inFile: $!";
open FILE, ">$ENV{'TEMP'}\\tst.txt" or die $!;
foreach (<INFILE>) {
    chomp;
    print FILE "${_}$separator";
}

print FILE "\n";

close(INFILE);
close(FILE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...