package A; # file A.pm use strict; use warnings; use Text::CSV_XS; use IO::File; sub init { my ($class,$filename) = @_; my $self = {}; my $csv_fh = IO::File->new($filename, 'r'); my $csv = Text::CSV_XS->new( { allow_whitespace => 1 } ); while (my $row = $csv->getline($csv_fh)){ my $param = $row->[0]; my $key = $row->[1]; next if $key =~ /^#/; if ($key =~ /\S/){ $self->{$param}{$key} = { 'value' => $row->[2], 'id' => $row->[3] }; } } return bless $self, $class; } sub get_value { my ($self, $param, $key ) = @_; return $self->{$param}{$key}{'value'}; } 1;