Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Re: dilemma

by Juerd (Abbot)
on Aug 07, 2003 at 17:42 UTC ( #281976=note: print w/ replies, xml ) Need Help??

in reply to dilemma

Or use a source filter ;)

There is a fourth option. You could choose to step away from the threads API and invent your own sub. A sub that takes a reference but has a different name. I don't know of a good name, but let's call it refshare for now. This can be combined with supporting share with the new prototype on newer perls. On older perls you could croak 'Old perl needs refshare(\$foo) instead of share($foo)'.

This has one froblem: s/use forks;/use threads;/ no longer magically makes the program use real threads. But a third module (threads::forks?) could implement a refshare that calls the real share to solve that problem.

Juerd # { site => '', plp_site => '', do_not_use => 'spamtrap' }

Comment on Re: dilemma
Re: Re: dilemma
by liz (Monsignor) on Aug 07, 2003 at 18:18 UTC
    ...Or use a source filter ;)

    Can you do source filters in 5.6.x? That would be a solution, simply only apply a source filter for source < 5.8.0 that replaces:

    share( $x );
    share( \$x );
    under the hood as it were. But I seem to remember source filters were introduced somewhere in the 5.7.x track?

    And no, I don't want to invent my own API. Perl needs a good threads implementation. I'm just trying to make it easier to learn and prototype with it.


      Can you do source filters in 5.6.x? says:

      Before you can build the Source Filters you need to have the following
      installed on your system:
          * Perl 5.004 or better. 5.6.0 or better is recommended for Win32.

      The source filter can be as simple as (untested)

      package Filter::share; use Filter::Simple; FILTER_ONLY code => sub { s/( \b share \b \s* \(? )(?= \s* [\@\$%] )/$ +1\\/gxe };
      but IIRC, source filters don't work on eval()ed code. OTOH, why would anyone eval a share call... :)

      Juerd # { site => '', plp_site => '', do_not_use => 'spamtrap' }

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://281976]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (7)
As of 2015-03-27 12:05 GMT
Find Nodes?
    Voting Booth?

    When putting a smiley right before a closing parenthesis, do you:

    Results (604 votes), past polls