Can you do this with rename? It does allow you to use perl code and expressions as arguments if I recall.

The real answer is the one by @chrsblck it does some checks and doesn't make a mess. 

For comparison here is a messy one liner that may suffice.  It relies on you providing a list of equivalent new file names that will rename your list of old files in the correct order.  Perhaps for your situation (where you don't want to do any programmatic transformation of the files names) you could just use a shell loop (see the end of this post) reading lists of new and old names from a file. A better perl solution would be to put both of these file name lists into two columns and then that file using the -a switch , @F and  then useFile::Copy to copy the files around. 

Anyway, below are some suggestions. 

First, set things up: 

 % vim newfilenames.txt # list new names one per line corresponding to old names.
 % wc -l newfilenames.txt # the same number of new names as files in ./oldfiles/
  8 newfilenames.txt
 % ls -1 oldfiles  # 8 files rename these in order to list from newfilenames.txt
 newSEACODI-sww2320H-sww24_07A_CP.9_sww2320H_sww2403F.fsa
 newSEACODI-sww2320H-sww24_07B_CP.10_sww2320H_sww2403F.fsa
 newSEACODI-sww2320H-sww24_07C_CP.11_sww2320H_sww2403F.fsa
 newSEACODI-sww2320H-sww24_07D_CP.12_sww2320H_sww2403F.fsa
 newSEACODI-sww2320H-sww24_07E_R.1_sww2320H_sww2403F.fsa
 newSEACODI-sww2320H-sww24_07F_R.3_sww2320H_sww2403F.fsa
 newSEACODI-sww2320H-sww24_07G_R.4_sww2320H_sww2403F.fsa
 newSEACODI-sww2320H-sww24_07H_R.5_sww2320H_sww2403F.fsa


With files arranged as above, copy everything over:

perl -MFile::Copy -E 'opendir($dh , oldfiles); @newfiles=`cat newfilenames.txt`; chomp @newfiles; @oldfiles = sort grep(/^.+\..+$/, readdir $dh); END {for $i (0..$#oldfiles){copy("oldfiles/$oldfiles[$i]", "newfiles/$newfiles[$i]"); }}'


Not pretty: you have to grep andsort on @oldfiles to get rid of . .. and put the array elments in order. And there's always the risk that a typo could make a mess and it would be hard to figure out.
If you put the old and new names in a couple of files you could just do this with this with a shell script:

for i in `cat ../oldfilenames.txt` ; do ; done; for n in `cat ../newfilenames.txt`; do cp $i $n;


or just cd into  the directory with the old files and do:

mkdir new
for i in * ; do ; done; for n in `cat ../newfilenames.txt`; do cp $i new/$n;


Good luck!

uniquely rename each of many files using perl
In two previous questions, it was clearly agreed that hesitating before playing a singleton specifically, and hesitating during play as a bluff generally constitute "wrongful/unethical hesitation." As an advanced beginner, I don't understand this rule at all.

I know that at the highest level, the best way to play and not give away any information about your holding to the opponents is to play each card at a nice even tempo. I am not a world class player; I am not even an advanced player (if I endplay you, I promise it wasn't intentional). As such, I frequently need to pause and calculate what to play, even in situations where the correct play should be obvious. 

Knowing that I will inevitably need to pause and consider a play and that that pause will provide my opponents with the information that I had a potentially difficult decision to make, why is it considered unethical for me to occasionally insert a similar pause before a routine play?

It isn't as if I could use such a pause to reliably signal something to my partner. In fact, this strategy removes the temptation for partner to draw unauthorized inferences from my pauses.
