- 论坛徽章:
- 0
|
本帖最后由 onepublic 于 2013-09-18 17:04 编辑
这个就是堆栈和出栈的原理- use strict;
- use warnings;
- use Data::Dumper;
- #stack op; show as Data::Dumper;
- my $str= 'a,b,c,d,e,[e1,e2,[e21,e22,[e111,e222,e333],e33],e3],f';
- my @stack;
- my @array = split(/,/,$str);
- push @stack,[];
- for (@array){
- if (m/\[/){
- s/\[//g;
- my $ref = [];
- push @{$stack[-1]},$ref; ##build struct
- push @stack,$ref ; #push stack
- push @{$stack[-1]},$_;
- }elsif (m/\]$/){
- s/\]//g;
- push @{$stack[-1]},$_;
- pop @stack;
- }else{
- push @{$stack[-1]},$_;
- }
- }
- print Dumper \@stack;
复制代码 |
|