Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

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' }

Replies are listed 'Best First'.
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 all is quiet...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (6)
As of 2018-05-26 15:03 GMT
Find Nodes?
    Voting Booth?