Peter 3 Peter 15 Peter 5 John 1 John 7 Mike 4 #### use Tie::File::AnyData; my $coderef = sub { ## Code to retrieve one by one the records from a file (one record per call) }; tie my @data, 'Tie::File::AnyData', $file, code => $coderef; ## Use the tied array untie @data; #### use Tie::File::AnyData; tie my @data, 'Tie::File::AnyData', $file; ## Use the tied array as with Tie::File #### Peter 3 Peter 15 Peter 5 John 1 John 7 Mike 4 #### use Tie::File::AnyData::CSV; tie my @arr, 'Tie::File::AnyData::CSV', $file or die; print "$arr[0]\n"; #### Peter 3 Peter 15 Peter 5 #### use Tie::File::AnyData::Bio::Fasta; tie my @fastaArray, 'Tie::File::AnyData::Bio::Fasta' or die $!; # Substitute the 10th sequence: $fastaArray[9] = $newsequence; # Get 10 random sequences: use List::Util qw/shuffle/; my @out = (shuffle @fastaArray)[0..9];