#!/usr/bin/perl use warnings; use strict; open(my $FILE, '<', 'input_file.txt') or die $!; my %output_files; my $line_number = 1; while (<$FILE>) { chomp; my @columns = split; my $value = abs($columns[$#columns]); if(!exists $output_files{$value}) { open($output_files{$value}, '>', "test-out-$value.txt") or die $!; } my $fh = $output_files{$value}; splice @columns, 0, 0, $columns[$#columns], $line_number; pop @columns; my $output_line = join "\t", @columns; print $fh "$output_line\n"; $line_number++; }