#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $file='blabla.hve'; my @data; open(my $fh, '<:encoding(UTF-8)', $file) or die("Can't open $file ($!)\n"); { local $/="\x1E"; while(my $block=<$fh>) { chomp($block); push(@data,[split(/\x1F/,$block)]); } } close($fh); print Dumper(\@data);