use strict; use warnings; use feature 'say'; use Data::Dumper; chomp( my @lines = ); shift @lines; my @output = map { /(\S+)\s+(\S+)/; my $dir = $2 eq 'WR' ? 'wire' : 'reg'; "$dir $1" } @lines; say Dumper \@output; __END__ Description RD/WR lfxosc_bp_c_jtag WR lfxosc_pd_c_jtag WR lfxosc_i_mult_ctrl_c_jtag[0] WR lfxosc_i_mult_ctrl_c_jtag[1] WR lfxosc_i_mult_ctrl_c_jtag[2] WR lfxosc_r_ref_ctrl_c_jtag[0] WR lfxosc_r_ref_ctrl_c_jtag[1] WR lfxosc_r_ref_ctrl_c_jtag[2] WR rd_rsrv_hfxosc_jtag RD rd_rsrv_hfxosc_jtag RD