in reply to Re: HTML::TokeParser::Simple advice requested
in thread HTML::TokeParser::Simple advice requested
++, but there's no need for a hash reference:
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);
And is there some reason a bit more auto-sensing couldn't be added to make these be typically implicit? Sure, to be safe, you'd want to use the two-argument form above, but for one-offs you could use the short form.
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) = @_; # ... }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: HTML::TokeParser::Simple advice requested
by borisz (Canon) on Aug 13, 2004 at 22:11 UTC | |
|
Re^3: HTML::TokeParser::Simple advice requested
by ihb (Deacon) on Aug 15, 2004 at 23:05 UTC |