Devel :: Declare удаляет строку из скрипта

Я пытаюсь изучить Devel :: Declare , чтобы попытаться повторно реализовать что-то вроде PDL :: NiceSlice без фильтров источника. Я кое-что получил, когда заметил, что он удаляет следующую строку из моего сценария. Для иллюстрации я привел этот минимальный пример, в котором можно использовать ключевое слово comment , чтобы удалить всю строку из кода, позволяя компилировать, даже если в этой строке много слов.

#Comment.pm
package Comment;

use strict;
use warnings;

use Devel::Declare ();

sub import {
  my $class = shift;
  my $caller = caller;

  Devel::Declare->setup_for(
      $caller,
      { comment => { const => \&parser } }
  );
  no strict 'refs';
  *{$caller.'::comment'} = sub {};

}

sub parser {
  #my $linestr = Devel::Declare::get_linestr;
  #print $linestr;

  Devel::Declare::set_linestr("");
}

1

и

#!/usr/bin/env perl
#test.pl

use strict;
use warnings;

use Comment;

comment stuff;

print "Print 1\n";
print "Print 2\n";

дают только результат.

Print 2

что мне не хватает?

PS У меня, вероятно, возникнут еще несколько вопросов по D :: D , если я разберусь с этим, так что заранее спасибо!

5
задан Joel Berger 8 August 2011 в 20:58
поделиться