in reply to grep problems and file copying issues
You need to re-read the documentation for grep. What it does is applies your expression to each element in the list in turn and returns a list containing the elements for which your expression returns a true value. Each time round, you evaluate the expression $cdLabel. Presumably this always has a value which evaluates as true and therefore all elements of the list appear in the new list.
What you probably want to do is to create a regular expression to check if the value of $cdLabel is equal to the value of the element in $_. Something like /$cdLabel/ would be a simple solution, but that might cause problems if one CD title can be contained within another one. Perhaps using regexes isn't the best approach and you should just use $_ eq $cdLabel.
Oh... and for the copying question, use the File::Copy module. I know you didn't want to use a module, but it is part of the standard distribution so you should be able to rely on its presence.
--
|
|---|