#!/bin/perl use strict; use warnings; use Data::Dumper; my $name="mouse"; pen (FH, "+<","datafile.txt")||die "cannot open file"; my (%HoA,$venue); while ( ) { next unless s/^(.*?):\s*//; $HoA{$1} = [ split /,/ ]; } print Dumper(%HoA); my $success="yes"; my $description="new string"; push @{ $HoA{$name} }, $success, $description; for $venue ( keys %HoA ) { print FH "$venue @{ $HoA{$venue} }\n"; }