No difference except for the one you mentioned. single and double-quoted strings both result in the same object except for the variable interpolation and related character escape rules.
In theory, if you don't need interpolation, using single quotes could compile a tiny bit faster, but a) perl compiles blazingly fast compared to most languages, and b) the time needed to analyze a quoted string is probably dwarfed by the time needed to load the perl interpreter and the rest of the code. Don't worry about it.
Also, using double-quotes makes it slightly easier to insert variables into the string later, which is why i generally prefer to use double-quoted strings for all literals that don't contain a lot of "meta" characters.
| [reply] |
zippy:~/scripts$ deparse -e '$h{q[one]} = 1; $h{qq[two]} = 2; $x = q[t
+hr]; $h{qq[${x}ee]} = 3;'
$h{'one'} = 1;
$h{'two'} = 2;
$x = 'thr';
$h{"${x}ee"} = 3;
-e syntax OK
| [reply] [d/l] [select] |
Well, deparse isn't 100% reliable, and secondly, it still takes some analyzing to determine that there are no strings to be interpolated in the double-quoted string.
Probably not much more than analyzing a single-quoted string for \' escapes though, since you'd only have to test for the sigils.
update: what I mean to say is, all this stuff is done at compile-time - i.e. normally, it's done only once per string; when the code is loaded. It has no impact at all after that. Run-time perl has no distinction between single and double quoted strings - it all compiles to a fixed string (for constant strings) or a number of concatenation operations on variables and constant strings (for interpolations).
| [reply] |
Nope. As a rule, interpolation is the only difference between single and double quotes in Perl. | [reply] |