Rob Dixon wrote:
Richard Lee wrote:
I was just testing out the code from the book 'writing perl modules for cpan' and I am trying out below module and getting compiled error.
I cannot/donot see what is wrong w/ the code.

can anyone see?

use strict;
use warnings;


package BOA::Logger2;
use Carp qw(croak);
use IO::File;

#constructor - returns new BOA::Logger2 objects
sub new {
    my ($pkg, $filename) = @_;
#initialize $self as a reference to an empty hash
    my $self = {};
#open the log file and store IO::File object in $self->{fh}
    my $filehandle = IO::File->new(">>$filename");
    croak("Unable to open $filename: $!") unless $filehandle;

    #print startup line
    $filehandle->print("BOA log started: " . localtime(time) . "\n");

    #store the filehandle in $self
    $self->{fh} = $filehandle;

    #set default log_level of one
    $self->{level} = 1;
#bless $self as an object in $pkg and return it
    bless($self, $pkg);
    return $self;
}

# level method - changes log level for this log object
sub level {
    my ($self, $level) = @_;
    $self->{level} = $level;
}

# write method - writes a line to the log file if log-level is high enough
sub  {
    my ($self, $level, $message) = @_;
    $self->{fh}->print($message) if $level <= $self->{level};
}


1;

You haven't named the last subroutine :)

Rob
I am using above w/ this simple program.


use strict;
use warnings;

use lib './cpan_pratice';
use BOA::Logger2;
my $logger = BOA::Logger2->new('logs/boa.log');
$logger->level(10);
$logger->write(10, "Hello world!\n");

and works fine.

I am trying to pick apart the pm example but

       my ( $pkg, $filename ) = @_;

do not really understand.
I am calling above w/
       my $logger = BOA::Logger2->new('logs/boa.log');

according to the book, it says ' a class method that returns new objects. new() receives 2 arguments - the name of the package
and the filename to open'

I don't understand how BOA::Logger2 is being passed over.. I am thinking only what's inside bracket new() is being passed..



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


Reply via email to