use strict;
use diagnostics;
use warnings;
use autodie qw(open close);
use Data::Dumper;
use 5.010;
#declare variables
my %hash;
my $data;
#opening Files using autodie to cut typing...
open my $in, '<', "Test_Data_RandNumbers.txt";
open my $in1, '<', "Test_Data_More_RandNumbers.txt";
open my $out, '>', "OUT_Test_Data_Ita_SpanFren_rest.txt";
open my $out1, '>', "OUT_Test_data_NO_match_SpanFren.txt";
#open my $out2,'>' , "./Test_Data_Out_None_Match.txt";
while (<$in>) {
#data manipulation to clean up ='s and ,'s
#dieci = diez, zehn -->worse case, remove spaces and = and comma;
#quattro = quatro -->only one number with spaces or not in from of =...
chomp;
my ( $ita, $spa, $num ) = split(/[=\s,]+/);
say "values are $ita $spa $num";
$hash{$ita}[0] = $spa;
#what about if there is no $num at position 1 in 1st file?
if ( defined $num ) {
$hash{$ita}[2] =
$num;
}
}
close $in;
while (<$in1>) {
chomp;
my ( $ita, $fren, $num1, $num2 ) = split(/[=\s,]+/);
say "values are $ita $fren $num1 $num2";
$hash{$ita}[1] = $fren; #now hash's format will look like this: ita=> spa fren
#define if there are numbers in position 3 and 4 concat to position 3
if ( defined($num1) and defined($num2) ) {
$hash{$ita}[3] = "$num1 $num2";
}
elsif ( defined $num1 ) {
$hash{$ita}[3] =
$num1;
}
}
close $in1;
foreach my $ita ( keys %hash ) {
if ( $hash{$ita}[0] and $hash{$ita}[1] ) {
print $out "$ita =>", join( ',', @{ $hash{$ita} } ), "\n";
}
else {
print $out1 "$ita =>", join( ',', @{ $hash{$ita} } ), "\n";
}
}
print Dumper(\%hash);
close $out;
close $out1;
####
C:\Users\Fred\Desktop\pm>type OUT*
OUT_Test_Data_Ita_SpanFren_rest.txt
sei =>seis,six,,six
quattro =>quatro,quatre,,four
due =>dos,deux,zwei,two
dieci =>diez,dix,zehn
sette =>siete,sept,sechs,seven sechs
cinque =>cinco,cinq,funf,funf five
undici =>once,onze,elf,eleven
tre =>tres,trois,drei,drei three
tredici =>trece,treize,dreizehn,thirteen dreizehn
OUT_Test_data_NO_match_SpanFren.txt
dodici =>doce
uno =>uno,,eins
nouve =>nueve,,neun
otto =>ocho
####
$VAR1 = {
'sei' => [
'seis',
'six',
'',
'six'
],
'quattro' => [
'quatro',
'quatre',
undef,
'four'
],
'due' => [
'dos',
'deux',
'zwei',
'two '
],
'dieci' => [
'diez',
'dix',
'zehn'
],
'sette' => [
'siete',
'sept',
'sechs',
'seven sechs'
],
'dodici' => [
'doce'
],
'uno' => [
'uno',
undef,
'eins'
],
'nouve' => [
'nueve',
undef,
'neun'
],
'cinque' => [
'cinco',
'cinq',
'funf',
'funf five'
],
'otto' => [
'ocho'
],
'undici' => [
'once',
'onze',
'elf',
'eleven'
],
'tre' => [
'tres',
'trois',
'drei',
'drei three'
],
'tredici' => [
'trece',
'treize',
'dreizehn',
'thirteen dreizehn'
]
};