07-19-2001
Returning Hash Tables in Perl
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 unfortunately doesn't seem to work. The hash table in the main doesn't equal the one I create in the sub routine. Any insight would be greatly appreciated. Thank you!
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
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... (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. 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
4. Shell Programming and Scripting
i want to ask is it i can use hash in perl to store a page number with a list of words which is in that page and then print it out?
Example
Page 1 contains a are boy cat ............. (a list of sorted words)
how can i store it in a hash?
Thank you (3 Replies)
Discussion started by: mingming88
3 Replies
5. Shell Programming and Scripting
Can Someone explain me why even using Tie::IxHash I can not get the output data in the same order that it was inserted? See code below.
#!/usr/bin/perl
use warnings;
use Tie::IxHash;
use strict;
tie (my %programs, "Tie::IxHash");
while (my $line = <DATA>) {
chomp $line;
my(... (1 Reply)
Discussion started by: jgfcoimbra
1 Replies
6. Programming
How hash tables are used to quickly locate a data record? (4 Replies)
Discussion started by: rupeshkp728
4 Replies
7. Shell Programming and Scripting
Hi,
In Perl, is it possible to use a range of numbers with '..' as a key in a hash?
Something in like:
%hash = (
'768..1536' => '1G',
'1537..2560' => '2G'
);
That is, the range operation is evaluated, and all members of the range are... (3 Replies)
Discussion started by: dsw
3 Replies
8. 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
9. 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
10. Programming
My issue is that the perl script (as I have done it so far) created empty branches when I try to check some branches on existence.
I am using multydimentional hashes: found it as the best way for information that I need to handle. Saing multidimentional I means hash of hashes ... So, I have
... (2 Replies)
Discussion started by: alex_5161
2 Replies
LEARN ABOUT DEBIAN
hash_iter
HASH(3pub) C Programmer's Manual HASH(3pub)
NAME
hash_create, hash_destroy, hash_install, hash_lookup, hash_uninstall, hash_iter - generic hash tables
SYNOPSIS
#include <publib.h>
Hashtab *hash_create(unsigned long (*fun)(void *),
int (*cmp)(const void *, const void *));
void hash_destroy(Hashtab *ht);
void *hash_install(Hashtab *ht, void *data, size_t size);
void *hash_lookup(Hashtab *ht, void *data);
int hash_uninstall(Hashtab *ht, void *data);
int hash_iter(Hashtab *ht, int (*doit)(void *, void *), void *param);
DESCRIPTION
These functions implement generic hash tables. The table is created by hash_create and destroyed by hash_destroy. The fun argument is a
pointer to the hashing function, which must convert a datum to an unsigned long, which is then converted to an index into the hashing ta-
ble. cmp is a qsort(3)-like comparison functions, used to compare to (wannabe) hash table elements.
hash_install installs a new datum into the table. A pointer to the data and the size of the data are given as the arguments. If the size
is 0, only the pointer value is copied to the table. Otherwise a copy of the data is made into dynamically allocated memory.
hash_lookup attempts to find a datum in the hash table. A pointer to another datum is given as the argument. The comparison function
should compare equal (return 0) the desired datum and this datum (but the argument needn't be a fully initialized datum, although that is
up to the writer of the comparison function). There cannot be two elements in the hash table that are equal (the comparison function
returns 0 for them). It is up to the user to handle collisions.
hash_uninstall removes an element from a table. The argument is a pointer to a datum that identifies the element.
hash_iter goes through every element in the hash table and calls the doit function for each. The first argument it provides to doit is the
element in question, the second is whatever was given to hash_iter as param. If doit returns -1 or 0 for any element in the hash table,
hash_iter immediately returns without going through the remaining elements in the hash table. Any other return value from doit is ignored.
RETURNS
hash_create returns a pointer to the new hash table, or NULL if it fails.
hash_install returns a pointer to an element in the table (either the installed one, or one that was already installed, if one tries to
install the same datum twice).
hash_uninstall returns 0 if it found the element in the array, or -1 if it didn't.
hash_lookup return a pointer to the element it finds, or NULL if it doesn't find anything beautiful.
hash_iter returns -1, 0, or 1. If hash_iter receives a return value of -1 or 0 for some element from doit, hash_iter immediately returns
-1 or 0, respectively. In all other cases hash_iter returns 1.
SEE ALSO
publib(3), qsort(3), bsearch(3)
AUTHOR
Lars Wirzenius (lars.wirzenius@helsinki.fi)
Publib C Programmer's Manual HASH(3pub)