> -----Original Message-----
> From: Ryan Frantz
> Sent: Tuesday, September 27, 2005 5:27 PM
> To: Dave Adams; beginners perl
> Subject: RE: Shift Question
> 
> 
> 
> > -----Original Message-----
> > From: Dave Adams [mailto:[EMAIL PROTECTED]
> > Sent: Tuesday, September 27, 2005 5:17 PM
> > To: beginners perl
> > Subject: Shift Question
> >
> > QUESTION: What is the purpose of the line "my $msg = shift;"?  I am
> > guessing it is for the @_ array but what list element is there to be
> > shifted off?  It seems that the shift function is in a lot of
> > subroutines and I am confused as to their purpose.
> 
> From what I understand shift defaults to @_ in a subroutine unless
> specified otherwise.  If your sub looked like this:
> 
> sub write_log($) {
>   my $msg;
>   print "$msg\n";
> }
> 
> $teststring = 'Test Msg to SysLog';
> write_log($teststring);
> 
> You'd get no output because $msg is undef.

I meant to be a little more explicit; in your code, the list element is
the string 'Test Msg to SysLog'.  shift'ing it into $msg gives you
something to print.

> 
> >
> > #!/bin/perl -w
> > (my $PROGNAME = $0) =~ s/^.*\///;
> > (my $SHORT_PROGNAME = $PROGNAME) =~ s/\.pl$//;
> > my $SYSLOG_PRIORITY = 'info';
> > my $SYSLOG_FACILITY = 'local4';
> >
> > use Sys::Syslog;
> >
> > sub write_log($) {
> >         #       write a datestamped message to the logfile, e.g.:
> >         #               &write_log('some message');
> >
> >         my $msg = shift;
> >
> >         #       print message to logfile:
> >         openlog($SHORT_PROGNAME,'pid','');
> >         syslog("$SYSLOG_FACILITY|$SYSLOG_PRIORITY", '%s', "$msg");
> >         closelog();
> >
> > }
> > $teststring = 'Test Msg to SysLog';
> > write_log($teststring);
> >
> > --
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > <http://learn.perl.org/> <http://learn.perl.org/first-response>
> >
> 
> 
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> <http://learn.perl.org/> <http://learn.perl.org/first-response>
> 


--
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