Consider the code below....
use warnings;
use strict;
use Data::Dumper qw(Dumper);
my @clk = ('ux_prim_clk', 'ux_side_clk', 'ux_xtal_frm_refclk');
#my @clk_output = map [ split /_/, $_ ], @clk;
# Just as a note: Performance is the same with explict loop.
# Every map statement can be expressed as a foreach() loop.
# This is the same your previous statement - nothing wrong with it
# just demo'ing what the map actually does...
my @clk_output;
foreach my $clk_line (@clk)
{
push @clk_output, [split "_",$clk_line];
}
print Dumper \@clk_output;
my @clk_new;
foreach my $row_ref (@clk_output)
{
push @clk_new, join ("_",@$row_ref);
}
print Dumper \@clk_new;
__END__
$VAR1 = [
[
'ux',
'prim',
'clk'
],
[
'ux',
'side',
'clk'
],
[
'ux',
'xtal',
'frm',
'refclk'
]
];
$VAR1 = 'ux_prim_clk';
$VAR2 = 'ux_side_clk';
$VAR3 = 'ux_xtal_frm_refclk';
Could also be coded...this does the same thing:
use warnings;
use strict;
use Data::Dumper qw(Dumper);
my @clk = ('ux_prim_clk', 'ux_side_clk', 'ux_xtal_frm_refclk');
my @clk_output = map [ split /_/, $_ ], @clk;
print Dumper \@clk_output;
my @clk_new = map{my $line =join ("_", @$_); $line}@clk_output;
print Dumper \@clk_new;