use warnings; use strict; my @a = ("a=1", "b=2", "c=3"); print join(",", @a), "\n"; add("b", 22);#this replaces print join(",", @a), "\n"; add("d", 45);#this inserts print join(",", @a), "\n"; sub add { my ($key, $val) = @_; my $exists = 0; for (grep /^$key=/, @a) { $_ = "$key=$val"; $exists = 1; } if (!$exists) { push @a, "$key=$val" } }