PPR::decomment
принимает строку в качестве аргумента, см. Документацию:
Требуется один аргумент: строка, содержащая код курса
Здесь вы вызываете его на $aRawFileData
, который является arrayref (используется как строка, выглядит как ARRAY(0x.....)
; она не содержит #
и, таким образом, остается как * на 1013 *)
Вместо того, чтобы читать ваш исходный код построчно, вы должны прочитать его как одну строку, сохранить его в переменной и передать в PPR::decomment
:
use File::Slurp;
my $sFilename = "test.pl";
my $source_code = read_file($sFilename);
my $without_comments = PPR::decomment($source_code);
print $without_comments;
Вы можете хотите все еще удалить \r
после прочтения файла. В этом случае добавьте
$source_code =~ s/\r$//g;
после прочтения ввода.
Я использовал File::Slurp
, чтобы прочитать весь файл сразу. Если вам нужен другой способ сделать это, взгляните на вопрос Как лучше всего поместить файл в строку в Perl? .
Если вам нужно строки вашего файла в массиве, вы можете затем разбить вашу строку:
my @lines = split /\n/, $without_comments;
Если вы хотите сохранить переносы (\n
), используйте:
my @lines = split /(?<=\n)/, $without_comments;