#!/usr/bin/perl -w use strict; my $raw_data; open(my $in, '-|', 'sh my_shell_script.sh arg1 arg2') or die "open(in): $!\n"; while (<$in>) { $raw_data .= $_; } my %pairs = split /_KJ_/, $raw_data; for (keys %pairs) { open(my $out, '>>', $_) or die "open(out): $!\n"; print $out %pairs{$_}; }