sub main { my $file = 'new_text.csv'; open FH, '<', $file or die "Cannot open the $file: $!"; ; my %hash; my @array_of_hash; LINE: while(my $line = ) { chomp $line; $line =~ s/\s+\$|approx\.\s*|\?|^\s*//g; next LINE if ( $line !~ /\S+/ ); my @values = split /\s*,\s*/, $line; if ( scalar @values != 3){ next LINE; } foreach ( @values ){ if ( $_ eq '' ) { next LINE; } } my ($name, $payment, $date ) = @values; %hash = ( 'name' => $name, 'payment' => $payment, 'date' => $date, ); push @array_of_hash, \%hash; } } main();