#!/usr/bin/perl use warnings; use strict; use feature qw{ say }; use Syntax::Construct qw{ /r }; my $template = join 'x', 'A9', # ssn 'A5', # employee number 'Z*/A', # employee name 'A8', # hire date 'Z*/A', # address 'A2', # state 'Z*/A', # city 'A5', # zip ; while (<>) { say join ',', map tr/\x0/ /r, unpack $template, tr/ /\x0/r; }