my %ignorables = map { $_ => 1 } qw([notice mpmstats: rdy bsy rd wr ka log dns cls bsy: in); open my $error_fh, '<', 'iset_error_log'; sub findLines { # Iterates over the lines in the file, putting each into $_ my @all_lines; while (<$error_fh>) { # Only worry about the lines containing [notice if (/\[notice/) { if (/\brdy\b/){ print "\n"; } else { print ","; } my @line = grep { not defined $ignorables{$_} } split /\s+/; # Cleanup s/|^\[|notice|[]]//g for @line; # remove [ from [foo # Output the line @line = join(",", @line); s/,,/,/g for @line; print @line; #this is where I would like to return the array. push @all_lines, @lines; } } return @all_lines; # outside of while loop } &findLines; close $error_fh;