#!/usr/bin/perl use Modern::Perl; #does an implict use strict; use warnings and activates "new" features no warnings qw /uninitialized/; my @result; # declares the array we will use to store the results { # starts a block open my $INPUTFILE, '<', '/Users/ts/numbers.txt' or die "File error: input file: $!"; while (<$INPUTFILE>) { chomp; #removes new line my ($index, $value) = split /\t/; # splits each record at the tab "\t" -character $result[$index] = $value; # and store the value in the array at the right place } } # ends the block, $INPUTFILE goes out of scope and closes the filehandle automatically $result[3000050] = 0 unless $result[3000050]; { # starts a block open my $OUTPUTFILE, '>', '/Users/ts/full_number.txt'or die "File error: output file: $!"; while (my ($index, $value) = each @result) { next if $index == 0; say $OUTPUTFILE, "$index\t", $value+0; # saves the results in a >>indexnumber tab value<< format } } # ends the block, $OUTPUTFILE goes out of scope and closes the filehandle automatically