#!/usr/bin/perl use strict; use warnings; my %data; my $cur_tag; open (FILE, '<', $ARGV[0]) or die "Could not open file: $!"; while () { chomp; if ( my ($tag,$line) = /^(X\S+)\s+(.+)$/ ) { $data{$tag} .= "\n" if exists $data{$tag}; $data{$tag} .= $line; $cur_tag = $tag; } elsif ($cur_tag && !/^BEGIN_TAG/) { $data{$cur_tag} .= " NEWLINE ".$_; } } for my $tag (sort keys %data) { print "$tag: $data{$tag}\n"; }