Home | History | Annotate | Line # | Download | only in Notes
      1 **************************************************************************
      2 * The following are notes for all the Perl tracing scripts,
      3 *
      4 * $Id: ALLperl_notes.txt,v 1.1.1.1 2015/09/30 22:01:09 christos Exp $
      5 *
      6 * COPYRIGHT: Copyright (c) 2007 Brendan Gregg.
      7 **************************************************************************
      8 
      9 
     10 * Where did those "BEGIN" subroutine calls come from?
     11 
     12 The following counts subroutines from the example program, Code/Perl/hello.pl,
     13 
     14    # pl_subcalls.d
     15    Tracing... Hit Ctrl-C to end.
     16    ^C
     17     FILE                             SUB                                 CALLS
     18 
     19 no subroutines were called, so there is no data to output.
     20 
     21 Now a similar program is traced, Code/Perl/hello_strict.pl, which uses
     22 the "strict" pragma,
     23 
     24    # pl_subcalls.d
     25    Tracing... Hit Ctrl-C to end.
     26    ^C
     27     FILE                             SUB                                 CALLS
     28     hello_strict.pl                  BEGIN                                   1
     29     strict.pm                        bits                                    1
     30     strict.pm                        import                                  1
     31 
     32 not only were functions from "strict.pm" traced, but a "BEGIN" function
     33 ran from the "hello_strict.pl" program - which doesn't appear to use "BEGIN",
     34 
     35    # cat -n ../Code/Perl/hello_strict.pl
     36         1  #!./perl -w
     37         2  
     38         3  use strict;
     39         4  
     40         5  print "Hello World!\n";
     41 
     42 Perl appears to add a BEGIN block to process the "use" keyword. This makes
     43 some degree of sense.
     44 
     45