Perl-программа - динамический код начальной загрузки - PullRequest
1 голос
/ 18 марта 2010

Мне нужно понять, как работает эта конкретная программа. Кажется, это довольно сложно, не могли бы вы посмотреть, не могли бы вы помочь мне понять, что делает эта программа на Perl, я новичок, поэтому вряд ли могу понять, что происходит в код, приведенный по следующей ссылке ниже, высоко ценит любые указания или идеи относительно этой программы. Спасибо...:) Эта программа называется premove.pl.c

Это связано с еще одной программой premove.pl, Его код выглядит так:

#!perl

open (newdata,">newdata.txt") 
|| die("cant create new file\n");#create passwd file
$linedata = "";
while($line=<>){
chomp($line);
#chop($line);
print newdata $line."\n";
}
close(newdata);
close(olddata);

__END__

Я даже не уверен, как запустить две программы, упомянутые здесь. Интересно также, что означает расширение первой программы, так как оно имеет расширение "pl.c", пожалуйста, дайте мне знать, если вы знаете, что это может означать. Мне нужно понять это как можно скорее, поэтому я пишу этот вопрос, мне не хватает времени, иначе я бы попытался сам в этом разобраться. Кажется, это сложная программа для начинающего, как я, надеюсь, вы понимаете. Еще раз спасибо за ваше время.

Ответы [ 2 ]

4 голосов
/ 18 марта 2010

Во-первых, в отношении введенного вами кода Perl:

См:

Это какой-то ужасно плохой код. Я переписал это для вас без всякой путаницы и глупости. Это должно быть немного более понятно.

#!perl
use strict;
use warnings;
use IO::File;

my $newdata = IO::File->new( 'newdata.txt', '>' )
    or die "Unable to open newdata - $!\n";

while( my $line = <> ) {

    $newdata->print( $line );

}

Главное, что может сбить с толку - это <> или нулевое чтение файлового дескриптора. Здесь он берет строку из любых файлов, перечисленных в аргументах программы, или, если аргументы не предоставлены, он читает STDIN.

Этот скрипт по сути cat filename > newdata.txt

Что касается premove.pl.c, я не эксперт по внутренним компонентам, но похоже, что автор взял пример того, как встроить интерпретатор Perl в программу на C, и вставил его в файл со странным именем.
Мне кажется, что он скомпилируется во что-то эквивалентное perl. Короче, еще один бесполезный артефакт. Человек, который произвел это, заплатил линией?

Если это состояние кода, который вы унаследовали, мне вас жаль.

1 голос
/ 22 марта 2010

Похоже, что кто-то пытался запустить конвертер Perl-to-C в вашей программе, чтобы он мог скомпилировать его в объект C. Они, вероятно, думали, что это сделает это быстрее. Я предполагаю, что вы можете проигнорировать файл .c и напрямую использовать этот Perl-скрипт.

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