$ perl -MO=Deparse -l40eprint,for'002'..'020'
BEGIN { $/ = "\n"; $\ = " "; }
print($_), 'for002' .. 16;
-e syntax OK
-sauoq
"My two cents aren't worth a dime.";
| [reply] [d/l] |
P:\test>perl -MO=Deparse -l40eprint,for'002'..'020'
BEGIN { $/ = "\n"; $\ = " "; }
foreach $_ ('002' .. '020') {
print $_;
}
-e syntax OK
P:\test>perl -l40eprint,for'002'..'020'
002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 01
+9 020
Works fine for me :)
Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller
If I understand your problem, I can solve it! Of course, the same can be said for you.
| [reply] [d/l] |
The shell is not mucking around with the input one bit. It interprets single quotes for itself, though, so Perl gets to see a literal 002..020. It works if you backslash the single quotes.
I far prefer a slight inconvenience in cases like this over having to work around a braindead (lack of) quoting mechanisms for the general case. Although CMD.EXE has borrowed enough bashishms that's it's barely bearable nowadays..
Makeshifts last the longest.
| [reply] |
That didn't work for me. All it did was print a space. (Both 5.6.0 on AIX and 5.8.0 on Solaris.)
------ We are the carpenters and bricklayers of the Information Age. The idea is a little like C++ templates, except not quite so brain-meltingly complicated. -- TheDamian, Exegesis 6 Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified. | [reply] |
| [reply] |