develooper Front page | perl.perl5.porters | Postings from June 2008

This Week on perl5-porters - 14-20 June 2008

Thread Next
David Landgren
June 27, 2008 13:37
This Week on perl5-porters - 14-20 June 2008
Message ID:
This Week on perl5-porters - 14-20 June 2008

   David Nicol: Does pushing all exceptions to @@ whenever $@ gets
   assigned to break anything?

   Abigail: In theory, it could, as @@ is a "normal" array that can be
   used as such. But I doubt anything serious will break. I'd say anyone
   that uses a punctuation variable that currently has no special meaning
   does so at his/her own risk, and doesn't have the right to complain if
   it does get special meaning.

   -- Abigail, suggesting that a little backwards compatibility breakage
   from time to time can be good for the soul.

Topics of Interest

Module::Build changes for VMS

   Craig Berry sorted out the changes for "Module::Build" that had made
   it to blead but not to the "M::B" repository, and tidied them up so
   that Ken Williams could apply them with a minimum of fuss.

Attempt to Configure under Bash on VMS results.

   John E. Malmberg, at a loss as to how to entertain himself, tried to
   configure Perl using the GNV/bash subsystem on VMS. After examining
   dozens of problems, he concluded that "it looks like a bit of work
   before VMS can run the UNIX configure script".

   One fundamental problem is that the test programs are there to test
   for C routines, but if Configure fails to spot the required header
   file in the first place, it will skip the test altogether, even though
   VMS compilers have ways of finding header files in all sorts of
   VMS-specific ways.

   Peter Prymmer suggested that a hints/ might allow a sane GNV
   environment to be set up, which could improve Configure's chances of

   Paul Green, paramount wrangler of Perl on Stratus VOS suggested that
   it was unlikely that pushing changes back to the "autoconf" authors
   was a viable approach. He did that five years ago, and he's still
   waiting for the changes to propagate out to various projects that use
   it. He advised John to tweak the VMS to work with the existing

Perl 5.8 and perl 5.10 differences on UTF/Pack things

   Alberto Simões ran into trouble with the changes that Ton added in
   5.10 to make "pack"/"unpack" self consistent. He wasn't sure what
   technique should be used to ensure the same behaviour on both versions
   of Perl; Nicholas Clark suggested side-stepping the problem

     the clark gambit

Empty regex

   Alfie accidentally trod in a thread from last month concerning the use
   of "qr/$var/" when $var is empty, thus reusing the previous pattern
   used for matching.

   This attracted a considerable amount of discussion, with Yitzchak
   Scott-Thoennes contributing the following gem:

    my $x = qr//;
     ok("foo" =~ /foo/ && "bar" =~ /$x$x/);
     ok("foo" =~ /foo/ && "bar" =~ /$x/);

   in which the first test succeeds, and the second test fails. Nicholas
   Clark wanted to know if there was a TODO for this (Yitzchak thought
   probably not), and which behaviour was the most desirable.

How to dig through symbol tables

   Sean O'Rourke was trying to inspect symbol tables, and noticed that
   *FOO{SCALAR} was always defined, and wondered if that was because he
   was prodding too hard. Ben Morrow confirmed that he was seeing the
   expected behaviour, although Yitzchak Scott-Thoennes pointed out that
   "PERL_DONT_CREATE_GVSV" changes the picture somewhat.

A Project to get Perl supported on Google App Engine

   Steven Adkins mentioned the project (at this stage not much more than
   a wish) to get Perl supported as a language for Google's App Engine.

   Not much came out of the discussion, apart from Ævar Arnfjörð
   Bjarmason who asked if there was a precise description of the sandbox
   environment the hosted applications would run in (such as no XS
   modules or system calls).

Incorrect variable reported in uninitialized value warning

   Yuval Kogman managed to fool the new "variable name reported in
   uninitialized value" warnings with a simple code snippet. Dave
   Mitchell fixed the problem a few hours later.

   This inspired Nicholas Clark to go looking, and find a more devious
   case that remained broken. Dave went looking and found a few more, and
   theoretically nailed them all with an additional patch.

     desperately seeking PUSHs(&PL_sv_undef)

TODO of the week

   A task that will get your name mentioned in the description of the
   "Highlights of 5.12".

make ithreads more robust

   Fix Perl_sv_dup, et al so that threads can return objects.

   (hint: you have more than one week to achieve this).

Patches of Interest

.gitignore file

   Florian Ragwitz began to update .gitignore files all over the codebase
   until Rafaël Garcia-Suarez gently explained that the files didn't
   exist in the repository yet, given that the porters had not yet
   switched over to git.

   Sam Vilain, owner and manager of the git mirror of the Perforce
   repository, outlined a mechanism he intended to put into place to
   allow people to start using git now, while not interfering with
   Perforce. Rafaël gave the approach the thumbs up.

   At the same time, Sam added a little script to parse perforce change
   numbers, and return the git revision ID when captured, or 'git-log'
   output otherwise. Unapplied.

TODO B::Deparse cpan #33708

   Reini dusted off the old TODO test from the CPAN report and tidied it
   up to suit blead. Applied by Rafaël.

pp_sys.c: "gethostbyaddr"

   H.Merijn Brand asked for help to figure out what was the best way for
   dealing with an HP-UX bug, since "gethostbyaddr" will use a DNS
   resolver whenever it finds one, regardless of what /etc/resolv.conf

     routing around brain damage

   In the process of tracking down that problem, H.Merijn discovered that
   HP-UX's C compiler has a warnings dial that goes up to 11. So he
   cranked it up and posted the results to the list, to see if anyone was
   inspired to adjust the code to reduce the quantity.


"Configure" - "d_sprintf_returns_strlen"

   Jerry D. Hedden noticed that if the test program used to detect the
   setting for "d_sprintf_returns_strlen" failed to compile, no-one would
   have been any the wiser. Unapplied.

     now you would know

New and old bugs from RT

Unix Domain sockaddr returned by recv is not acceptable to 
"Socket::unpack_sockaddr_un" (#2052)

   Renée Bäcker noticed that one of the oldest still-open bugs in the
   database was no more.

     seems to be fixed

   As does "Lexical objects not destroyed at end of scope" (#3308)

foreach spuriously autovivifies (#2166)

   Mike Guy originally pointed out that "foreach (@h{a, b}) { }"
   autovivifies $h{a} and $h{b}, when it would have been nice not to.
   Renée didn't see why it should, but since it's been known about and
   relied upon for so long, it may no longer be fixed.

   Bo Lindbergh showed how a "do" block could be used as a work-around.


Issue with the exists function (#45147)

   Renée also added another datapoint to this problem, narrowing the
   effect to one implicating "@-".

Buffer overflow in "win32_select()" (PATCH included) (#46309)

   Risto Kankkunen had identified this, and proposed a patch, back in
   October 2007. Rafaël applied it to blead this week.

"Out of memory ... sbrk()" on FreeBSD-6.x for v.5.8.x but not v.5.6.x 

   Rafael also applied Slaven Rezic's patch that fixes this problem.

   as well as a a patch to stat.t from John P. Linderman, thus resolving
   bug #47746.

Regexp optimisation affected by threads (#55600)

   John Gardiner Myers had identified a problem with pattern matches
   being performed slowly in threads, since a character class
   optimisation was skipped. Dave Mitchell grovelled through the source
   and discovered why the optimisation was suppressed, and why it wasn't
   be re-enabled. Unfortunately Dave isn't familiar with this part of the
   code and didn't want to hazard a fix.

perlbug refactoring and prose cleanup (#55844)

   Jesse Vincent consolidated the various patches to "perlbug" from last
   week. Paul Johnson stopped by to comment that he hated the linguistic
   drift that has made "issue" become synonymous with "bug", "problem" or
   "question". (note to self: guilty as charged).

   On a completely different note, Paul also thought that "autodie" (the
   name, not the concept) is awful.

     a pity the alternatives are worse

"h2xs" does not handle properly enum constants (#55896)

   Domi@hp reported an issue, no, *problem*, with XS bindings to
   interface C code that uses "enum"s, and a pointer to a blog that
   provides additional commentary.

   Steve Peters thought that all the problems that were known at the time
   the blog entry was written had been addressed, so he wasn't sure if it
   was still relevant. But he did want to find out more about the
   specific problem being encountered, in case there was more "enum" work
   that needed doing.

Iteration order of hash keys doesn't appear random (#55952)

   Jonathon Sailor wondered why hash keys were always iterated in the
   same order, regardless of how "PERL_HASH_SEED" is set. Turns out the
   documentation was wrong.

miniperl SIGBUS on test during build Sunos8 64-bit (#55968)

   Someone at Sony filed a report about failing to build on Solaris. Andy
   Dougherty made a few educated guesses about what the problem was, and
   suggested a recipe that might work, and/or a copy of to
   figure what the problem was.

problem with miniperl (#55980)

   Shanthi M Srinivasan had a problem with libraries on a 64-bit Linux
   box not being picked up. Andy explained that the problem was resolved
   in 5.10 (which was released six months (!) ago). For people stuck with
   5.8, the fix is simple, just requiring /lib64 and /usr/lib64 to be
   specified during configuration.

"return return" (#56150)

   Nicholas Clark wondered why this wasn't a syntax error. Rafaël
   Garcia-Suarez showed him why it was a feature.

   The thread then expanded into a very long discussion about the
   (f)utility of using an explicit "return" statement.

     obviously you've never tried to return a reference to a hash

"(((??{1 + $^N})))" behaves differently in 5.10.0 than in blead (#56194)

   While researching whether bug #27603 had been fixed, Bram discovered
   that "123 =~ /^(\d)(((??{1+$^N})))+$/ ? 1 : 0" return 0 or 1,
   depending on whether one uses 5.10.0 or 5.11.0 (or any suitable blead)
   to run the code. No replies, but it's obviously some sort of
   regression that wasn't nailed down by a test.

     of course, it didn't work at all in 5.8

Attempt to free unreferenced scalar: SV... (#56202)

   Mike Capella reported a problem with an enormous list of "qr/.../o"
   patterns producing some interesting emergent behaviour. Bram suggested
   he get rid of the "/o" modifiers. Mike wanted to know the reason but
   no-one clued him in. In the meantime, Mike came up with a work-around,
   but since the appearance of the error seemed to be dependent on the
   number of patterns used, he thought it indicated some sort of overflow
   situation, should someone with the necessary internals skills feel
   like looking into it.

     not today

Perl5 Bug Summary

   Hmm, four more this week than last week.

     271 new + 1275 open = 1546 (+12 -8)

New Core Modules

       Version 1.23 is alive and kicking, thanks to Jerry D. Hedden. The
       change is an attempt to stamp out timing errors that cause
       spurious failures in the test suite.

In Brief

   Paul Fenwick asked about accessing caller's %^H at runtime in 5.8.x,
   as part of his ongoing "autodie" adventure. Sartak suggested he look
   at chocolateboy's "Devel::Hints::Lexical" for inspiration. Paul
   admitted having spoken to chocolateboy at length about that very
   module, and explained that it didn't really go as far as he needed.

   Paul then shared a monologue with us regarding accessing caller's $^H
   in 5.8 and 5.10.

     they all lived happily ever after

   Crawford Curry mentioned the incomplete documentation of
   "CGI::charset" (in cpan #36817).

     paging mr. stein

   In a followup to the changes in "m//m" in 5.10 thread, Eric Brine
   suggested that the documentation in "perlop" needed updating.

   Niko Tyni reported that the Debian project had discovered that the
   latest "File::Path::rmtree" makes symlink targets world-writable.

     something else for my copious spare time

Last week's summary

   Jan Dubois picked up on last week's summary of why "IPC::Run" is
   preferable to "system", explaining that on Win32 it is rather
   inefficient as it depends on additional helper processes to get the
   job done. As a result, the variable $^X (the name of the current copy
   of Perl) doesn't contain what one might expect.

   An additional complication is that the exit status counter on Win32 is
   a 32-bit quantity and thus does not even fit in $?. One solution would
   be to borrow from VMS, and implement a sane "${^CHILD_ERROR_NATIVE}"

   Worse, if a child process returns -1... In certain circumstances, the
   parent runs the child a second time.

   And then they started talking about losing $@ from an "eval" all over
   again. Mark Mielke nailed the problem when he said that the problem is
   that $@ is a global, but "eval" is inherently recursive.

     This Week on perl5-porters - 1-6 June 2008

About this summary

   This summary was written by David Landgren.

   Weekly summaries are published on and posted on a
   mailing list, (subscription: The
   archive is at Corrections
   and comments are welcome.

   If you found this summary useful, please consider contributing to the
   Perl Foundation or attending a YAPC to help support the development of

stubborn tiny lights vs. clustering darkness forever ok?

Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About