Search code examples
perlsingle-quotesvariable-names

Single quotes in a variable name in Perl?


I was writing some Perl code in vim and accidentally typed a single quote character in a variable name and noticed that it highlighted it in a different color than normal single quoted strings.

enter image description here

I thought that was odd, so I wrote a small test program (shown above) and tried to run it to see how Perl would handle it and I got this error:

"my" variable $var::with::apostrophes can't be in a package

What exactly is going on here? Are there situations where single quotes in variable names are actually valid? If so, what meaning do single quotes have when used in this context?


Solution

  • The single quote is the namespace separator used in Perl 4, replaced by the double colon :: in Perl 5. Because Perl is mostly backwards compatible, this still works. It's great for golfing, but not much else.

    Here's an article about it on perl.com that doesn't explain it.