package SSEParser; use Moo; use Data::Dumper; extends 'XML::LibXML'; sub load_sse_file { my ($self, $filename) = @_; die "File not found <$filename>\n" unless -f $filename; die "Not SSE file <$filename>\n" unless $filename =~ /_subeditor\.xml$/i; my $doc = $self->parse_file($filename); print '='x75, "\n"; print Dumper($doc); print '='x75, "\n"; bless $doc, 'SSEDocument'; return $doc; } 1; #### package SSEDocument; use Moo; extends 'XML::LibXML::Document'; sub find_buses { my ($self) = @_; return $self->findnodes("//DNOM/Substation/Bus"); } 1; #### #!/usr/bin/perl use warnings; use strict; use Data::Dumper; use SSEParser; my $inst = SSEParser->new(); print Dumper($inst); my $sse_doc = $inst->load_sse_file("test_subeditor.xml"); print Dumper($sse_doc); my @buses = $sse_doc->find_buses(); #### $VAR1 = bless( { '_State_' => 0, 'XML_LIBXML_PARSER_OPTIONS' => 4102 }, 'SSEParser' ); =========================================================================== $VAR1 = bless( do{\(my $o = 68387856)}, 'XML::LibXML::Document' ); =========================================================================== $VAR1 = bless( do{\(my $o = 68387856)}, 'SSEDocument' ); Can't locate object method "find_buses" via package "SSEDocument" at C:\usr\scripts\SSE\sseparser\pm\testmyclass.pl line 12.