my $parser1 = HTML::TokePaser::Simple->new(path => $file_name);
my $parser2 = HTML::TokePaser::Simple->new(handle => $file_handle);
my $parser3 = HTML::TokePaser::Simple->new(string => $string);
my $parser4 = HTML::TokePaser::Simple->new(fqdn => $fqdn);
####
my $parser1 = HTML::TokePaser::Simple->new($file_name);
my $parser2 = HTML::TokePaser::Simple->new($file_handle);
my $parser3 = HTML::TokePaser::Simple->new($long_string);
my $parser4 = HTML::TokePaser::Simple->new($uri);
sub new {
my $class = shift;
my ($mode, $target) = (@_ == 1 ? $class->guess_mode($_[0]) : (), @_);
my $source = ( $mode eq 'path' ) ? $target :
( $mode eq 'stringref' ) ? $target :
( $mode eq 'string' ) ? \$target :
do {
my $method = "source_for_$mode";
$class->$method( $target )
};
$class->SUPER::new( $source );
}
sub guess_mode {
my $class = shift;
( ref($_[0]) =~ /^IO|FileHandle/) ? 'handle' :
( ref($_[0]) eq 'SCALAR' ) ? 'stringref' :
( $_[0] =~ /^\w{3-6}\:/ ) ? 'uri' :
( length($_[0]) > 1024 ) ? 'string' :
'path';
}
sub source_for_uri {
my ($class, $uri) = @_;
# ...
}