package Subtitle::BASE; use strict; use warnings; use utf8; sub log { my ($self, $level, $msg) = @_; if ($level eq 'error') { push @{ $self->{log} }, "E: $msg"; } elsif ($level eq 'warn') { push @{ $self->{log} }, "W: $msg"; } elsif ($level eq 'info') { push @{ $self->{log} }, "I: $msg"; } elsif ($level eq 'debug') { push @{ $self->{log} }, "D: $msg" if $self->{debug}; } else { warn "Unknown loglevel $level of $msg\n"; } return 1; } sub parse { return "Unimplemented by subclass"; } sub build { return "Unimplemented by subclass"; } 1; =pod =head1 NAME Subtitle::BASE -- base class of subtitle file =head1 SYNOPSYS use base 'Subtitle::BASE'; This module should not be used directly. =head1 METHODS =head2 C $obj->log(warn => "something happens"); Add some info to processing log. Takes two args: message level (debug/info/warn/error) and message text Collected messages can be accessed like this: my @log = @{ $obj->{log} }; =head C =head C Stubs for subclasses =cut