En Mon, 05 Jan 2009 02:03:26 -0200, Roy Smith <r...@panix.com> escribió:


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.

Ouch! Me too, when I come to some piece of Perl code I've written some years ago, I invariably think "what's all this noise?". Never happens with other languages I've used in the past.

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to