sub _setup { my $stp = shift; my %slf = ( stamp => '[%h:%m:%s] (%L){'."\t".'%F} - %A{ ( %E )}', level => 2, lpath => _skew(@{[ fileparse($main::0) ]}[1]) ); unless (defined $stp) { $stp = {}; } # make sure we got what we need unless (ref $stp eq 'HASH') { return ( ERR => 1 ); } foreach my $confval ( ['Level', q/$slf{level} = int($stp->{Level});/], ['To_Keep', q/_keep_logs(int($stp->{To_Keep})) or die;/], ['String', q/$slf{string} = $stp->{String};/], ['Sectional', q/section_title(), $TOKE{F}->{onoff} = 1;/], ['Directory', q/$slf{lpath} = _skew($stp->{Directory});/] ) { if (defined $stp->{$_->[0]}) { eval $_->[1]; } if ($@) { return ( ERR => 1 ); } } unless (-d $slf{lpath}) { mkdir($slf{lpath},0777) or return ( ERR => 1 ); } if (exists $stp->{Dated_Directories} and $stp->{Dated_Directories}) { unless (defined $stp->{File_Name}) { $stp->{File_Name} = _detoke('%h;%m;%s')); } $slf{lpath} = _skew($slf{lpath},_detoke('%Y-%M-%D')); mkdir($slf{lpath},0777) or return ( ERR => 1 ); } unless (defined $stp->{File_Name}) { $stp->{File_Name} = _detoke('%Y-%M-%D %h;%m;%s'); } else { $stp->{File_Name} = _detoke($stp->{File_Name}); } $slf{lpath} = _skew($slf{lpath},$stp->{File_Name}); $slf{handle} = new FileHandle; $slf{handle}->open($slf{lpath},'>'); return ( ERR => 1 ) unless defined $slf{handle}; return %slf; }