#!/usr/bin/perl -- use strict; use warnings; use Data::Dump; my $blah = ( [ "S", ["SN", "ac2.bd"], [ "I1", ["IN", "s%1"], ["NM", 1], [ "HL", ["HLD", "kkk kjkjk"], ["ST", "abdc"], ["HI", "REM SSS"], ["H_M", 9], ["HL", 72], ["EB", 0], ["ER", 0], ["HI", "E043-93A-DF0-0AB63E"], ["PE", "aaa"], ["HN", "DEE"], ["SS", "NS"], [ "SED", ["APR", ["PAD", "kkk"], ["PN", 9905], ["HH", "llkjk"]], ["DD", ["LLL", "kkk"]], ], ], ["ppp", 1], ["RAW", "kkk"], ["DN", "kkk"], ["RIN", "ppp"], ], ["PPP", 1], ["AA", "LLI"], ], ); use Data::Rmap qw/ rmap_array /; rmap_array { my( $key, $val, @rest ) = @$_; if( not ref $key ){ if( @rest ){ $_ = { $key, [ $val, @rest ] }; } else { $_ = { $key, $val }; } } return; } $blah; dd $blah; __END__ { S => [ { SN => "ac2.bd" }, { I1 => [ { IN => "s%1" }, { NM => 1 }, { HL => [ { HLD => "kkk kjkjk" }, { ST => "abdc" }, { HI => "REM SSS" }, { H_M => 9 }, { HL => 72 }, { EB => 0 }, { ER => 0 }, { HI => "E043-93A-DF0-0AB63E" }, { PE => "aaa" }, { HN => "DEE" }, { SS => "NS" }, { SED => [ { APR => [{ PAD => "kkk" }, { PN => 9905 }, { HH => "llkjk" }] }, { DD => { LLL => "kkk" } }, ], }, ], }, { ppp => 1 }, { RAW => "kkk" }, { DN => "kkk" }, { RIN => "ppp" }, ], }, { PPP => 1 }, { AA => "LLI" }, ], }