sub parse { my $self = shift; my $arg = shift; croak "Parse already in progress (Expat)" if $self->{_State_}; $self->{_State_} = 1; my $parser = $self->{Parser}; my $ioref; my $result = 0; if (defined $arg) { if (ref($arg) and UNIVERSAL::isa($arg, 'IO::Handle')) { $ioref = $arg; } elsif (tied($arg)) { my $class = ref($arg); no strict 'refs'; $ioref = $arg if defined &{"${class}::TIEHANDLE"}; } else { eval { $ioref = *{$arg}{IO}; # This is line 456 }; undef $@; } }