in reply to move command

Using backticks in void context isn't very useful - capturing an output to discard it might not be the best option.

As Corion wrote, perl has the rename builtin, with the caveat that it doesn't work across file system boundaries.

A possible solution is to use the list form of system, which doesn't pass the arguments to a shell, thus not having a problem with shell meta characters:

system('mv', $filename, 'new&filename_renamed.txt') == 0 or die "Can't move files: $?";