#!usr/bin/env perl use strict; use warnings; use List::Util 'uniq'; sub do_thing { my ($file_path, $href) = @_; open my $fh, '<', $file_path or return 0; while (my $line = <$fh>) { # stuff my $group = 'some setup for this line.'; my $value = 'some setup for this line.'; push @{$href->{test}}, { group => $group, values => [ $value, sort uniq(@{$href->{values} // []}), # This will be empty if the definedness test would have been false. ], }; } }