- 论坛徽章:
- 12
|
先大概实现,效率低下,没有做不可翻转的辨别。
- # http://bbs.chinaunix.net/thread-4295208-1-1.html
- use Data::Dumper;
- $Data::Dumper::Indent = 0;
- my $oldarr = [1, [2, [3, 4, [5]] ] ];
- my $newarr = [];
- convert( $oldarr, $newarr, 0 );
- print Dumper $newarr;
- sub convert
- {
- my ( $oldarr, $newarr, $lv ) = @_;
- grep { push @$newarr, $_ if ( ref $_ ne "ARRAY" ) } @$oldarr;
- for ( @$oldarr )
- {
- if ( ref $_ eq "ARRAY" )
- {
- @$newarr = ( [@$newarr] ) ;
- convert( $_, $newarr, $lv+1 );
- }
- }
- }
复制代码
输出
$VAR1 = [[[[1],2],3,4],5];[Finished in 0.1s]
|
|