Noob question: Is all this typecasting normal?
Roy Smith
roy at panix.com
Sun Jan 4 23:03:26 EST 2009
In article
<cc87ebf5-5ce1-4fb5-bb2d-cd4bc2426ce3 at q36g2000vbn.googlegroups.com>,
sprad <jsprad at gmail.com> wrote:
> On Jan 3, 6:41 pm, Steven D'Aprano <st... at REMOVE-THIS-
> cybersource.com.au> wrote:
> > The OP comes from a Perl background, which AFAIK allows you to concat
> > numbers to strings and add strings to numbers. That's probably the (mis)
> > feature he was hoping Python had.
>
> That's correct -- and that's been one of the more difficult parts of
> my transition. Learned C++ in college, spent a few years doing Perl,
> and now all of a sudden type matters again. It's a very different
> philosophy, but I'm determined to stick with it until I have an Aha!
> moment and find something I can do more easily than I can with Perl.
The Aha! moment comes 6 months from now, when you discover that you can
understand the Python code you wrote 6 months ago, but the Perl code you
wrote at the same time has become gibberish, even to you.
The other day, I came upon this gem. It's a bit of perl embedded in a
Makefile; this makes it even more gnarly because all the $'s get doubled to
hide them from make:
define absmondir
$(shell perl -e ' \
sub absmon { my $$a = $$_[0]; \
if ( $$^O =~ m/cygwin|MSWin32/i ) {
$$prefix = `/bin/mount -p|awk "NR==2{print \\\$$1}"`;
chomp($$prefix); \
$$a = ($$_[1]||"$(PWD)") . "/$$a" \
unless ( $$a =~ m !^(:?$$prefix|/|[A-Za-z]:)! ); \
} else { $$a = ($$_[1]||"$(PWD)") . "/$$a" unless ( $$a =~ m !^/! ); } \
return unslash(undot(undotdot($$a))); }; \
sub unslash ($$) { $$_[0] =~ s://+:/:g; $$_[0] =~ s:/$$::; return($$_[0]);
}; \
sub undot ($$) { $$_[0]=~s:/\./:/:g; return ($$_[0]); }; \
sub undotdot ($$) { my $$in = $$_[0]; \
return ( $$in =~ s:/[^/.][^/]*/\.\.::g )?undotdot($$in):$$in; }; \
print absmon("$(1)","$(2)"); \
' )
endef
Barf-o-rama. I know what it's supposed to do, and I still can't figure it
out.
More information about the Python-list
mailing list