0
이 고려 :-pie one-liner 모드의 Perl 디버거 작업?
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
스크립트의 작업으로 각 루프를 인쇄 "달러 밑줄"$_
같은 뭔가를 할 수 있습니까?