my @matches = $pdus =~ /[^{}]+ | \{ (?: (?R) | [^{}]+ )+ \} /gx;
__END__
$VAR1 = [
'[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: UDT',
'{
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line2: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line3: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line4: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line5: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line6: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line7: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line8: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line9: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line10 data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line11: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line12: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line13: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line14: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line15: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line16: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line17: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line18: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line19: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line 20 {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line21 data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line22 data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line23 data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line24: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line25: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line26 = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line27: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line29 data = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line30: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line32: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line33: data = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line34: data = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line35: data = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line36: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line38: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line39: data = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line40: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line42 = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line43: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line44: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line45: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line46: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line47: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line48: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line49: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line50: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line51: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line52: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line53: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx:
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line55: data = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line56: data = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line57: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line58: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line59: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line60 = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line61: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line63: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line65 = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line66 = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line67: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line69: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line70: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line72 = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line73: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line74: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line75: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line76: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line77: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line78: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line79: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line80: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line81: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line82: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx:
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line84: data = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line85: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line86: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line87: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line88: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line89: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line90: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line91: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line92: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line93: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line94: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line95: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line98: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line99: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line100: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line104: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line105: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line106: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line107: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line110: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }'
];
####
my @matches = $pdus =~ /\{ (?: (?R) | [^{}]+ )+ \}/gx;
__END__
$VAR1 = [
'{
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line2: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line3: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line4: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line5: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line6: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line7: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line8: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line9: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line10 data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line11: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line12: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line13: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line14: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line15: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line16: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line17: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line18: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line19: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line 20 {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line21 data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line22 data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line23 data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line24: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line25: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line26 = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line27: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line29 data = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line30: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line32: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line33: data = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line34: data = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line35: data = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line36: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line38: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line39: data = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line40: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line42 = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line43: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line44: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line45: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line46: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line47: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line48: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line49: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line50: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line51: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line52: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line53: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx:
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line55: data = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line56: data = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line57: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line58: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line59: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line60 = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line61: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line63: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line65 = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line66 = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line67: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line69: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line70: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line72 = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line73: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line74: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line75: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line76: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line77: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line78: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line79: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line80: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line81: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line82: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx:
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line84: data = {
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line85: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line86: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line87: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line88: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line89: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line90: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line91: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line92: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line93: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line94: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line95: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line98: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line99: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line100: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line104: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line105: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line106: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line107: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: line110: data
[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: }'
];
####
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
sub fileParse {
my ( @files ) = @_;
my $refHash = {};
open(my $fh, '<' , $files[0])
or die "Could not open file '$files[0]' $!";
my $pdus = do { local $/; <$fh> };
close $fh
or die "Could not close file '$files[0]' $!";
chomp( $pdus );
# my @matches = $pdus =~ /\{ (?: (?R) | [^{}]+ )+ \}/gx;
my @matches = $pdus =~ /[^{}]+ | \{ (?: (?R) | [^{}]+ )+ \} /gx;
# Trim leading and trailing white spaces
s/^\s+|\s+$//g for (@matches);
%{$refHash} = @matches;
return $refHash;
}
my $final = fileParse( @ARGV );
my @sorted = ();
push @sorted, $_ for (sort keys %{$final});
print Dumper \@sorted;
__END__
$VAR1 = [
'[ 11] 25/2/2017-19:02:06.980 proces_name thanos-Rx: UDT',
'[ 12] 25/2/2017-19:02:06.996 proces_name thanos-Tx: UDT',
'[ 13] 25/2/2017-19:02:07.185 proces_name thanos-Rx: UDT',
'[ 14] 25/2/2017-19:02:07.227 proces_name thanos-Tx: UDT',
'[ 17] 25/2/2017-19:02:07.413 proces_name thanos-Tx: UDT',
'[ 18] 25/2/2017-19:02:09.794 proces_name thanos-Rx: UDT'
];