http://qs1969.pair.com?node_id=439352


in reply to Re: logfile rotate w/ pass by reference
in thread logfile rotate w/ pass by reference

Thank ytou and I realize my problem where you stated. But I am unsure of the correct syntax??? I tried this:
logroll($filename) sub logroll { my $logs = new Logfile::Rotate (File => $_, <- - - - What needs to go here?

Replies are listed 'Best First'.
Re^3: logfile rotate w/ pass by reference
by Joost (Canon) on Mar 14, 2005 at 16:55 UTC
      ok so in your sample code how does the subroutine know what variable it is receiving based off of your filename? Im ny code I have two distinct filenames I want to pass to logfile::rotate so how do I do this?
      if ( ( my $dif = $dif[1] - $dif[2] ) > 199 ) { &mailme; logroll($out); if ( ( my $diff = $diff[1] - $diff[2] ) > 199 ) { &mailme; logroll($out1); sub logroll { my $logs = new Logfile::Rotate (File => ???? # <---- what is here based? Count => 10, # off of 2 diff filenames Gzip => 'lib', Dir => '/usr/local/log/old', Flock => 'yes', Persist => 'yes' ); $logs->rotate(); }
        It doesn't need to know the name of the variable that is being passed. That's whole point of having subroutine arguments in the first place.

        All your logroll function needs to know is the name of the file. The name of the file is the value of the argument. The name of the variable is not important.

        sub print_value { my $value = shift; print $value; } my $var1 = "value in var1\n"; my $var2 = "value in var2\n"; print_value($var1); print_value($var2);

        This is all documented in the perlfunc manpage.

        update: I see I mistyped the code in the previous example. Maybe my update will make it clearer. :-)