#! /usr/bin/perl -w use strict; use Data::Dumper; my $fasta_file = $ARGV[0]; my $directory = $ARGV[1]; my $qual_file = $ARGV[2]; sub make_file_hash { my ($file) = @_; my %file_hash; open(FH, "< $file"); while (my $line = ) { chomp($line); my @parts = split(/\//,$line); my $name = $parts[3]; if ($name =~ /(^.{3})([0-9]{4})(F|P|R)/) { my $key = $2 . "." . lc($3); $file_hash{$key} = $name; } elsif ($name =~ /(^.{2})([0-9]{8})(F|P|R)/) { my $key = $2 . "." . lc($3); $file_hash{$key} = $name; } else { print $name . " is crap\n"; } } return %file_hash; } sub rename { my ($file, $hash_ref, $dir) = @_; my %hash = %$hash_ref; #print Dumper(%hash); if ($file =~ /([0-9]{4,8})(.f|r|p)(.*)/) { my $key = $1 . $2; if (exists $hash{$key}) { my $filename = $hash{$key}; `mv $file $dir/$filename`; } else { print "no key $key\n"; } } } my %tmp_hash = &make_file_hash($fasta_file); open(FH2, "< $qual_file"); while( my $file = ) { chomp($file); &rename($file, \%tmp_hash, $directory) }