08-02-2001
Passing Hash Tables to Subroutines
Hi:
How do I pass a hash table down to a subroutine along with some other variables?
For example, I have say a subroutine play_with_hash:
sub play_with_hash
{
my( $var1, $var2, %my_hash ) = @_;
#do stuff with %my_hash
...........
}
Then I want to call the subroutine say in the main routine but i want to send a hash table in the main routine for the subroutine to use:
play_with_hash( $variableA, $variableB, %this_hash );
unfortunately this doesn't work, i get the hash through but $var1 and var2 don't get assigned the right value in the subroutine. any ideas people? THANKS!
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
Hi:
Does anybody know how to return hash tables created in a function?
I have something like so:
%a_hash_table = build_a_hash_table();
sub build_a_hash_table
{
my(%hash_table);
#some code to build hash table: "%hash_table" for e.g
return %hash_table;
}
----> This... (1 Reply)
Discussion started by: mirzabhai
1 Replies
2. Programming
I want to store a bunch of pthread_t types in a hash table, but since pthread_t is not an integer value, I cannot hash it. I was hoping to store a unique nonzero as key 0 for each thread with thread-specific data ala pthread_key_create/pthread_setspecific, but but as it turns out only the first... (2 Replies)
Discussion started by: Corona688
2 Replies
3. Shell Programming and Scripting
I am trying to transpose tables listed in the format into format. Any help would be greatly appreciated.
Input:
test_data_1
1 2 90%
4 3 91%
5 4 90%
6 5 90%
9 6 90%
test_data_2
3 5 92%
5 4 92%
7 3 93%
9 2 92%
1 1 92%
...
Output:... (7 Replies)
Discussion started by: justthisguy
7 Replies
4. Programming
Hi All,
i was browsing thru' the opensource glib(deflate/inflate) algorithms..
which i am supposed to implement. I came across Dictionary usage (Hash tables), LZ77 algorithm and Huffman coding in that.. i couldn't follow on the Hash table implementation in that.
Anybody there to give some... (5 Replies)
Discussion started by: rvan
5 Replies
5. Shell Programming and Scripting
I have a script (say script1.sh ) and I am calling a script (say script2.sh) within the script1.sh. Here in script1.sh I have a hash ( say %hash1) and i have to pass this hash to script2.sh. Basically i have to do some processing in Scirpt2.sh based on the hash(key,values). I wanted to know how can... (2 Replies)
Discussion started by: ammu
2 Replies
6. Shell Programming and Scripting
hi there
I have the following script in which i have created a PrintHash() function.
I want to pass to this function the reference to a hash (in the final code i will be passing different hashes to this print function hence the need for a function). I am getting an error
Type of arg 1 to... (1 Reply)
Discussion started by: hcclnoodles
1 Replies
7. Programming
How hash tables are used to quickly locate a data record? (4 Replies)
Discussion started by: rupeshkp728
4 Replies
8. UNIX for Advanced & Expert Users
Hi Everyone,
Can anyone help me how do i call hash variable in to sql query in perl. Please see the script below
i have defined two Hash %lc and %tab as below
$lc{'REFF'}='V_RES_CLASS';
$lc{'CALE'}='V_CAP_CLASS';
$lc{'XRPD'}='V_XFMR_CLASS';
$tab{'V_RES_CLASS'}='V_MFR_SERS';... (6 Replies)
Discussion started by: jam_prasanna
6 Replies
9. UNIX for Dummies Questions & Answers
Hello,
I want to know how hash tables for buffers were implemented in Unix and now, in linux how they are implemented ?
I am aware of what hashing is..also quite familiar with Unix/Linux.
Special case is how device numbers comes into picture..I am curious !
If possible consider some... (0 Replies)
Discussion started by: istevan
0 Replies
10. Shell Programming and Scripting
Hi,
I have an hashes of hash, where hash is dynamic, it can be n number of hash. i need to compare data_count values of all .
my %result (
$abc => {
'data_count' => '10',
'ID' => 'ABC122',
}
$def => {
'data_count' => '20',
'ID' => 'defASe',
... (1 Reply)
Discussion started by: asak
1 Replies
LEARN ABOUT PHP
debug_zval_dump
DEBUG_ZVAL_DUMP(3) 1 DEBUG_ZVAL_DUMP(3)
debug_zval_dump - Dumps a string representation of an internal zend value to output
SYNOPSIS
void debug_zval_dump (mixed $variable, [mixed $...])
DESCRIPTION
Dumps a string representation of an internal zend value to output.
PARAMETERS
o $variable
- The variable being evaluated.
RETURN VALUES
No value is returned.
EXAMPLES
Example #1
debug_zval_dump(3) example
<?php
$var1 = 'Hello World';
$var2 = '';
$var2 =& $var1;
debug_zval_dump(&$var1);
?>
The above example will output:
&string(11) "Hello World" refcount(3)
Note
Beware the refcount
The refcount value returned by this function is non-obvious in certain circumstances. For example, a developer might expect the
above example to indicate a refcount of 2. The third reference is created when actually calling debug_zval_dump(3).
This behavior is further compounded when a variable is not passed to debug_zval_dump(3) by reference. To illustrate, consider a
slightly modified version of the above example:
Example #2
<?php
$var1 = 'Hello World';
$var2 = '';
$var2 =& $var1;
debug_zval_dump($var1); // not passed by reference, this time
?>
The above example will output:
string(11) "Hello World" refcount(1)
Why refcount(1)? Because a copy of $var1 is being made, when the function is called.
This function becomes even more confusing when a variable with a refcount of 1 is passed (by copy/value):
Example #3
<?php
$var1 = 'Hello World';
debug_zval_dump($var1);
?>
The above example will output:
string(11) "Hello World" refcount(2)
A refcount of 2, here, is extremely non-obvious. Especially considering the above examples. So what's happening?
When a variable has a single reference (as did $var1 before it was used as an argument to debug_zval_dump(3)), PHP's engine opti-
mizes the manner in which it is passed to a function. Internally, PHP treats $var1 like a reference (in that the refcount is
increased for the scope of this function), with the caveat that if the passed reference happens to be written to, a copy is made,
but only at the moment of writing. This is known as "copy on write."
So, if debug_zval_dump(3) happened to write to its sole parameter (and it doesn't), then a copy would be made. Until then, the
parameter remains a reference, causing the refcount to be incremented to 2 for the scope of the function call.
SEE ALSO
var_dump(3), debug_backtrace(3), References Explained, References Explained (by Derick Rethans).
PHP Documentation Group DEBUG_ZVAL_DUMP(3)