Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

A problem when modify a pm

by anaconda_wly (Scribe)
on Dec 19, 2012 at 03:33 UTC ( #1009482=perlquestion: print w/ replies, xml ) Need Help??
anaconda_wly has asked for the wisdom of the Perl Monks concerning the following question:

As suggested on net(see http://social.technet.microsoft.com/Forums/en/ITCG/thread/87867142-17e7-4c07-bfb7-2e333ff6e1b7), I added lines to TieRegistry to support 64 rgistry's accessing. I copied and rename the TieRegistry copy to TieRegistry64 in the same folder, as well as updating the package and the "use TieRegistry64". But I got an error not recognize the $Registry: Global symbol "$Registry" requires explicit package name. How ca I do?

in TieRegistry64:
package Win32::TieRegistry64Support;# change name ...... sub KEY_WOW64_64KEY () { 0x0100} sub KEY_WOW64_32KEY () { 0x0200} ........ @$RegObj{qw( HANDLE MACHINE PATH DELIM OS_DELIM ACCESS FLAGS ROOTS )}= + ( "NONE", "", [], "\\", "\\", KEY_READ|KEY_WRITE|KEY_WOW64_64KEY|KEY_WOW64_32KEY, $Flag_HexDWord +|$Flag_FixNulls, "${PACK}::_Roots" );
in my perl, change from:
use Win32::TieRegistry;
to:
use Win32::TieRegistry64;
I checked the path correct. Any suggestion?

Comment on A problem when modify a pm
Select or Download Code
Re: A problem when modify a pm
by bulk88 (Priest) on Dec 19, 2012 at 04:35 UTC
    I don't understand what you are doing, and you aren't showing enough code. the "use Some::Thing;" goes by file on your disk, never what is inside the file. It has no connection to the packages declared in that file. Usually a Perl module file's name will be identical to the package statement in the that module for sanity reasons.

      OK, it's like this: to solve a problem, I have to make changes to the TieRegistry module. But to be safe, I didn't change on it directly. Instead, I made a copy and change the copied one and renamed it as TieRegistry64 in the same Perl lib folder as TieRegistry. But error mentioned happens and I didn't know how to fix at the moment.

        The TieRegistry is a standard module of Perl. In normal time when I "use Win32:TieRegistry", I can use $Registry directly without error. I found one line in TieRegistry:

        use vars qw( $RegObj %_Roots %RegHash $Registry );
Re: A problem when modify a pm
by Athanasius (Abbot) on Dec 19, 2012 at 05:58 UTC

    I cannot reproduce your problem:

    1. Copied the module Win32::TieRegistry and renamed the copy as Win32::TieRegistry64.

    2. Changed package Win32::TieRegistry; to package Win32::TieRegistry64;.

    3. Changed

      BEGIN { $PACK = 'Win32::TieRegistry'; $VERSION = '0.26'; @ISA = 'Tie::Hash'; }

      to

      BEGIN { $PACK = 'Win32::TieRegistry64'; $VERSION = '0.26'; @ISA = 'Tie::Hash'; }
    4. Changed

      # Basic master Registry object: $RegObj= {}; @$RegObj{qw( HANDLE MACHINE PATH DELIM OS_DELIM ACCESS FLAGS ROOTS )}= + ( "NONE", "", [], "\\", "\\", KEY_READ|KEY_WRITE, $Flag_HexDWord|$Flag_FixNulls, "${PACK}::_Root +s" );

      to

      # Basic master Registry object: sub KEY_WOW64_64KEY () { 0x0100 } sub KEY_WOW64_32KEY () { 0x0200 } $RegObj= {}; @$RegObj{qw( HANDLE MACHINE PATH DELIM OS_DELIM ACCESS FLAGS ROOTS )}= + ( "NONE", "", [], "\\", "\\", KEY_READ|KEY_WRITE|KEY_WOW64_64KEY|KEY_WOW64_32KEY, $Flag_HexDWord +|$Flag_FixNulls, "${PACK}::_Roots" );

    The resulting module contains the variable $Registry (a blessed hash reference) which is still accessible:

    15:39 >perl -Mstrict -MWin32::TieRegistry64 -wE "say $Registry;" Win32::TieRegistry64=HASH(0x17155bc) 15:55 >

    Perhaps you missed one of the steps above? Or there’s something more you haven’t shown?

    Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

      Yes, you're right! I missed step 3 as I thought it's just a string and may not affect the finding. The error missing now. I'll read document about things in Begin block. Thank you!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1009482]
Front-paged by bulk88
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (4)
As of 2015-07-05 03:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls