sub querryDatabase() {
my($inputData) = @_;
...
should be this:
sub querryDatabase() {
my($self, $inputData) = @_;
...
because the first argument passed in to any method call is always an object reference. Here’s a contrived (and naïve) example:
use strict;
use warnings;
package Widget
{
use Moose;
has 'ID' =>
(
is => 'rw',
isa => 'Str',
required => 1,
);
sub inc_id
{
my ($self, $inc) = @_;
my $id = $self->ID;
my ($prefix, $suffix) = $id =~ /^([^\d]+)(\d+)$/;
$self->ID( $prefix . ($suffix + $inc) );
}
}
my $gizmo = Widget->new( { ID => 'PM142' } );
print $gizmo->ID, "\n";
$gizmo->inc_id(5);
print $gizmo->ID, "\n";
Output:
16:41 >perl 1366_SoPW.pl
PM142
PM147
16:41 >
Note that the inc_id method receives two arguments, although only the second (in this case, 5) is passed explicitly in the method call $gizmo->inc_id(5). The first argument, a reference to the $gizmo object, is passed implicitly.
Hope that helps,
|