Depends. If the variable contains a short string, then the slow down will be negligible. If it contains a number and the subroutine needs to do some more computations, then you've just forced perl to convert the number to a string and back. If nothing more, it's wasteful.
Then there is yet another case. What if the variable contains a huge string? You've just made yet another copy ...
Jenda Enoch was right!
Enjoy the last years of Rome.
I thought using eval in that way, on a scalar to execute a command is a NO-NO for security and not best practice! cant you just use the qx or system call?
You must think about where the scalar came from, and how much you trust that source (taint checking can help you keep track of that, but you still have to think about it), but if you do trust it, it is fine.
You similarly have to think about it if you interpolate it (uselessly) into a string.