我正在嘗試編寫一個簡單的Perl調試器,並且遇到以下問題。'Goto undefined subroutine&main :: 1'編寫一個簡單的Perl調試器
我運行下面的代碼作爲調試器:
{
package DB;
sub DB { }
sub sub
{
&$sub;
# this is what produces the problem
$i = 1*1;
}
}
1;
我加載這通過設置PERL5DB環境變量 - 例如:
export PERL5DB="BEGIN { require './debugger/tracer.pl'; }
鑑於這種簡單的小Perl腳本:
#!/usr/bin/env perl
use Getopt::Long;
print "hello world";
我運行腳本:
perl -d test.pl
運行時,它會生成以下錯誤:
$ perl -d test.pl
Goto undefined subroutine &main::1 at /home/vagrant/perl5/perlbrew/perls/perl-5.16.0/lib/site_perl/5.16.0/Exporter.pm line 25.
BEGIN failed--compilation aborted at test.pl line 6.
我已經分離出在& $子後運行問題什麼;在調試器中調用sub。這個問題發生在基本Perl腳本包含的特定軟件包中 - 在這種情況下,Getopt :: Long,儘管我也發現了IO :: File的相同結果。
我的Perl很生疏,尤其是像調試器這樣的高級主題。
任何人都可以幫助我理解如何在& $ sub;在調試器中調用sub以很好地放置我正在導入的包?
謝謝!
哇,非常感謝你!你完全正確 - 似乎已經解決了這個問題。非常感謝!!我們很難探索Perl調試器的世界 - 除了調試器文檔和讀取Perl5調試器代碼本身之外,我們還沒有發現太多依賴。我們應該檢查的任何其他資源?真的很感謝幫助! – shedd