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

Error: Invalid value for shared scalar when assigning a scalar

by ISAI student (Scribe)
on Apr 23, 2013 at 16:02 UTC ( #1030180=perlquestion: print w/ replies, xml ) Need Help??
ISAI student has asked for the wisdom of the Perl Monks concerning the following question:

Hello all. I am getting from these two lines of code (numbers 1244 & 1245):

print( "\$wave_tcl_file is $wave_tcl_file\n"); ${$$all_shary_for_subs{'%sim_info'}{$sim_ref}}{'tcl_file'} = $wave_tcl +_file
And I am getting this output:

$wave_tcl_file is /scratch/ldagan/edata/eng/ldagan/voodoo_from_1.1.7.b4/Results/Log/0000___tc_dataif_simple.wave.tcl

Invalid value for shared scalar at /edata/eng/ldagan/voodoo_from_1.1.7.b4/DesignLibs/ScriptLib/Generic/WMPerl/voodoo// line 1245.

Isn't $wave_tcl_file a scalar ? 1 line before it looked like a normal string...

Replies are listed 'Best First'.
Re: Error: Invalid value for shared scalar when assigning a scalar
by kennethk (Abbot) on Apr 23, 2013 at 16:26 UTC
    I expect that the problem is not $wave_tcl_file, but rather is $all_shary_for_subs. I assume you are using threads::shared and $all_shary_for_subs is declared with :shared. As the docs say,
    Shared variables can only store scalars, refs of shared variables, or refs of shared data

    Without seeing more information around your block, I would guess you are trying to store an anonymous hash in your shared variable.

    #11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.

      Thanks. There was a typo in the code. The toplevel hash was not shared.
Re: Error: Invalid value for shared scalar when assigning a scalar
by BrowserUk (Pope) on Apr 23, 2013 at 17:03 UTC

    You cannot autovivify multi-level hash elements in shared hashes. They must be created & shared explicitly.

    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1030180]
Approved by Corion
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (11)
As of 2016-08-25 20:48 GMT
Find Nodes?
    Voting Booth?
    The best thing I ever won in a lottery was:

    Results (362 votes). Check out past polls.