On 4/25/05, Manish Sapariya <[EMAIL PROTECTED]> wrote:
> Hello,
> Can somebody explain me the magic here....
> 

sub vprint (@) {     
          # subroutine declaration with prototype

    return unless $Utils::verbose;
          # exit sub unless $Utils::verbose flag is set

    my ($file, $line) = (caller)[1,2];
          # take a slice (the second and third items: the file containing
          # the package where the subroutine was called, and the line
          # number where it was callled) of the list returned by the 
          # caller() function, and assign the values to $file and $line.  
          # see perldoc -f caller for details.

    my $subr = (caller 1)[3] || 'main';
          # take a slice of (only the thrid item) of the list returned
          # by caller(1) and assign the value (the subroutine name
          # of the subroutine where the current subroutine (vprint)
          # was invoked to $subr.  (caller 1)[3] is undefined, use 
          # 'main' instead. see perldoc -f caller for details.

    $file =~ s!.*/!!;
          # strip everything up to the last '/' character from $file
          # in case (caller)[1] is a full path name.

    print STDERR "$subr($file:$line): ", @_;
          # print the subroutine, file, and line number information, 
          # along with anything else passed to the sub on STDERR.
}

HTH,

--jay

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to