8
मुझे लगता है कि यह संदर्भ पर निर्भर है।क्या नए subroutine कॉल के लिए @_ पुन: उपयोग किए गए तत्व हैं या नया @_ बनाया गया है?
- जब
&func
कॉल किया जाता है यह पुन: उपयोग किया जाता है - यह अन्य सभी कॉल
मैं this code है जहाँ मैं लाइन 1004 पर अप्रत्याशित eval
कॉल मिला लिए बनाया जाता है:
sub save_context {
@DB::context = (\@_, (caller 2)[8..10], [email protected], $_); # line 1004
print_state "\nTRAPPED IN ", "\n\n" if _ddd;
DB::state('inDB', 1);
}
और यह स्टैकट्रैक:
DB /x/local/lib/perl5/Devel/DebugHooks.pm 1419 DB::orig_frames
DB /x/local/lib/perl5/Devel/DebugHooks.pm 1460 DB::push_frame
DB /x/local/lib/perl5/Devel/DebugHooks.pm 1004 DB::__ANON__[/x/local/lib/perl5/Devel/DebugHooks.pm:1460]
DB /x/local/lib/perl5/Devel/DebugHooks.pm 1004 (eval)
DB /x/local/lib/perl5/Devel/DebugHooks.pm 1251 DB::save_context
DB /x/local/lib/perl5/Devel/DebugHooks.pm 1288 DB::DB_my 1
MyApp::Controller::User /x/lib/MyApp/Controller/User.pm 41 DB::DB 1
Mojolicious /x/local/lib/perl5/Mojolicious.pm 133 MyApp::Controller::User::list
Mojolicious::Plugins /x/local/lib/perl5/Mojolicious/Plugins.pm 15 Mojolicious::__ANON__[/x/local/lib/perl5/Mojolicious.pm:133]
...
मेरी लॉग फ़ाइल से मैं देख सकता हूँ कि DBIx::Class::DESTROY
उप कहा जाता है:
DB::sub DB::state: l:1 d:0 s:5 t:0 /x/local/lib/perl5/Devel/DebugHooks.pm:1004 --> DBIx::Class::DESTROY
वस्तु विनाश क्यों स्थगित कर दिया है? मुझे लगता है कि किसी तरह
कोई सुझाव है कि क्या एक तर्क सूची के बिना वस्तु विनाश यहाँ
क्या स्क्रिप्ट के अंत में विनाश को बुलाया जा रहा है (वैश्विक विनाश चरण)? – mob
@mob मुझे पता चला है कि क्यों 'DESTROY' कहा जाता है। नीचे दिए गए उत्तर को देखें –