Действия Perl-отладчика в однострочном режиме -pie?
Учти это:
cat > mytestfile.txt <<'EOF'
"'iceberg'"
"'ice cliff'"
"'ice field'"
"'inlet'"
"'island'"
"'islet'"
"'isthmus'"
EOF
perl -dpi -e 's/ice/dice/' mytestfile.txt
Когда запускается отладчик, я пытаюсь добавить действие для печати $_
, но:
$ perl -dpi -e 's/ice/dice/' mytestfile.txt
Loading DB routines from perl5db.pl version 1.39_10
Editor support available.
Enter h or 'h h' for help, or 'man perldebug' for more help.
main::(-e:0): BEGIN { require 'perl5db.pl' };LINE: while (<>) {
DB<1> n
main::(-e:1): s/ice/dice/
DB<1> n
main::(-e:0): BEGIN { require 'perl5db.pl' };LINE: while (<>) {
DB<1> print $_
DB<2> n
main::(-e:1): s/ice/dice/
DB<2> print $_
DB<3> n
main::(-e:0): BEGIN { require 'perl5db.pl' };LINE: while (<>) {
DB<3> p $_
"'ddiceberg'"
DB<4> print "$_"
...
DB<1> a 0 print "$_";
DB<2> L
DB<3> L a
DB<4> n
...
DB<6> a 1 print "$_"
DB<7> L a
-e:
1: s/ice/dice/
action: print "$_"
DB<8> n
main::(-e:1): s/ice/dice/
DB<8> n
main::(-e:0): BEGIN { require 'perl5db.pl' };LINE: while (<>) {
DB<8> n
main::(-e:1): s/ice/dice/
DB<8> n
main::(-e:0): BEGIN { require 'perl5db.pl' };LINE: while (<>) {
DB<8> n
...
DB<8> a 1 p $_
DB<9> L a
-e:
1: s/ice/dice/
action: p $_
DB<10> n
main::(-e:1): s/ice/dice/
Can't locate object method "p" via package " "'ice cliff'"
" (perhaps you forgot to load " "'ice cliff'"
"?) at (eval 13)[/usr/share/perl/5.18/perl5db.pl:732] line 1, <> line 3.
DB<10> n
main::(-e:0): BEGIN { require 'perl5db.pl' };LINE: while (<>) {
Can't locate object method "p" via package " "'dice cliff'"
" (perhaps you forgot to load " "'dice cliff'"
"?) at (eval 14)[/usr/share/perl/5.18/perl5db.pl:732] line 1, <> line 3.
... есть проблемы:
- Если я сделаю
print $_
Я получаю пустую строку - если я делаюp $_
Я получаю фактическую распечатку переменной - Я не могу добавить действие в строке 0
- В строке 1 действие выполняется, но оно не выглядит, если
print $_
используется как действие, поскольку, как уже упоминалось, возвращает пустую строку; ноp $_
даже если он печатается в интерактивном режиме, при использовании в качестве действия возникает ошибка.
Так, как я могу иметь что-то вроде "подчеркивание доллара" $_
печатать каждый цикл как действие отлаженного -pie
скрипт?
1 ответ
Получил через Как запустить команду `x` внутри <действия в отладчике perl?, его { p $_
:
DB<1> { p $_
DB<2> n
main::(-e:1): s/ice/dice/
auto(-1) DB<2> p $_
"'iceberg'"
DB<3> n
main::(-e:0): BEGIN { require 'perl5db.pl' };LINE: while (<>) {
auto(-1) DB<3> p $_
"'diceberg'"
DB<4> n
main::(-e:1): s/ice/dice/
auto(-1) DB<4> p $_
"'ice cliff'"
DB<5> n
main::(-e:0): BEGIN { require 'perl5db.pl' };LINE: while (<>) {
auto(-1) DB<5> p $_
"'dice cliff'"