Hi,
The task i have to do is to
1- create a database contains the Names .run the query and store results in hash make the Name field is the hash key
2- in the same time i have a txt which i will loop through it word by word and check for each word if a hash key ( compare it with the Names in the Name field in the hash ) or not if it is a key print it to a txt file and print that it match the database.
Now , the code can get the results from db in a hash form with the key field Name andin the same time loop through the input txt word by word
But till now i can't compare these words withthee names stored in the hash to know if it match or not.
I am abeginner and really i arrive to this level after alot of efforts and i can't go ahead with code any more. So really i need your help.
Code:
#!/usr/bin/perl
use DBI;
#step1
$sqlstatement = "select Name from protiens;";
#open connection to Access database
$dbh = DBI->connect('dbi:ODBC:driver=microsoft access driver (*.mdb);dbq=C:\protiens.mdb') ;
#prepare and execute SQL statement
$sth = $dbh->prepare ($sqlstatement);
$sth->execute || die "Could not execute ";
$ref1 = $sth->fetchrow_hashref($Name);
while($ref1 = $sth->fetchrow_hashref($Name)){
print "$$ref1{'Name'}\n";
}
# step2
%hash1 = $$ref1{'Name'};
if(exists $hash1{$key}){
print "there is a key\n";
}
#step3
$filename= 'C:\project\abstract of protein.txt';
open (FILE,$filename) or die $!;
while (<FILE>){
for $word (split)
{
# define hash
%hash2 = $word;
foreach $key (%hash2) {
#Check for a hash key
if(exists $hash2{$key}){
print "there is a one key\n";
}
}
} #step4 unknown
if ($ref1{$key} eq $hash2) {
print "The key for $hash2 is $key\n";
$flag++;
}
unless ($flag) {
print "There is no key for $hash2".\n;
}
}
i've reworked some code from an earlier post, and it isn't working as expected
i've simplified it to try and find the problem. i spent hours trying to figure out what is wrong, eventually thinking there was a bug in perl or a problem with my computer. but, i've tried it on 3 machines with the... (5 Replies)
hello again, i've checked many sites for examples and am amazed that i can't find a simple example of an if statement to test for an alphanumber value ie:
if($key == "a" )
to run this pgm: perl del3.pl delin
delin data is:
a=1
b=2
c=3
thanks for any pointers
ps: java programmer... (7 Replies)
Hi,
Now i work in a code that
1-get data stored in the database in the form of hash table with a key
field which is the " Name"
2-in the same time i open a txt file and loop through it word by word
3- which i have a problem in is that :
I need to loop word by word and check if it is a... (0 Replies)
Hello,
I have a hash in hsh. I need to assign it to another hash globalHsh. I think the below statement does not work
$globalHsh{$id} = %hsh;
What is the right way to assign it?
Thanks (3 Replies)
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)
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)
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)
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)
Experts - Any advice on how to get a hash value in a foreach loop?
Values print correctly on standalone print statements, but I can't access value
in foreach loop.
See sample code below and thanks in advance.
foreach my $z (sort keys %hash) {
for $y (@{$hash{$z}}) {
print "$z... (6 Replies)
I'm trying to make a perl script using the "open" command to open and read a file, storing the information in said file into a hash structure.
This is what is inside my file-
Celena Standard F 01/24/94 Cancer
Jeniffer Orlowski F 06/24/86 None
Brent Koehler M 12/05/97 HIV
Mao Schleich... (4 Replies)
Discussion started by: Eric1
4 Replies
LEARN ABOUT DEBIAN
hfind
HFIND(1) General Commands Manual HFIND(1)NAME
hfind - Lookup a hash value in a hash database
SYNOPSIS
hfind [-i db_type ] [-f lookup_file ] [-eq] db_file [hashes]
DESCRIPTION
hfind looks up hash values in a database using a binary search algorithm. This allows one to easily create a hash database and identify if
a file is known or not. It works with the NIST National Software Reference Library (NSRL) and the output of 'md5sum'.
Before the database can be used by 'hfind', an index file must be created with the '-i' option.
This tool is needed for efficiency. Most text-based databases do not have fixed length entries and are sometimes not sorted. The hfind
tool will create an index file that is sorted and has fixed-length entries. This allows for fast lookups using a binary search algorithm
instead of a linear search such as 'grep'.
ARGUMENTS -i db_type
Create an index file for the database. This step must be done before a lookup can be performed. The 'db_type' argument specifies
the database type (i.e. nsrl-md5 or md5sum). See section below.
-f lookup_file
Specify the location of a file that contains one hash value per line. These hashes will be looked up in the database.
-e Extended mode. Additional information besides just the name is printed. (Does not apply for all hash database types).
-q Quick mode. Instead of displaying the corresponding information with the hash, just display 0 if the hash was not found and 1 if it
was. If this flag is used, then only one hash can be given at a time.
-V Display version
db_file
The location of the hash database file.
[hashes]
The hashes to lookup. If they are not supplied on the command line, STDIN is used. If index files exist for both SHA-1 and MD5
hashes, then both types of hashes can be given at runtime.
INDEX FILE
hfind uses an index file to perform a binary search for a hash value. This is much faster than using 'grep', which will do a linear search.
Before a hash database is used, a corresponding index file must be created. This is done with the '-i' option to hfind.
The resulting index file will be named based on the database file name. The name will have the original name following by the hash type
(sha1 or md5) followed by '.idx'. For example, creating an MD5 hash index of the NIST NSRL results in 'NSRLFile.txt-md5.idx' and the SHA-1
index results in 'NSRLFile.txt-sha1.idx'.
The file has two columns. Each entry is sorted by the first column, which is the hash value. The second column has the byte offset of the
corresponding entry in the original file. So, when a hash is found in the index, the offset is recorded and then 'hfind' seeks to the
entry in the original database.
The following input types are valid. For NSRL, 'nsrl-md5' and 'nsrl-sha1' can be used. The difference is which hash value the index is
sorted by. The 'md5sum' value can also be used to sort and index "home made" databases. 'hfind' can take data in both common formats:
MD5 (test.txt) = 76b1f4de1522c20b67acc132937cf82e
and
76b1f4de1522c20b67acc132937cf82e test.txt
EXAMPLES
To create an MD5 index file for NIST NSRL:
# hfind -i nsrl-md5 /usr/local/hash/nsrl/NSRLFile.txt
To lookup a value in the NSRL:
# hfind /usr/local/hash/nsrl/NSRLFile.txt 76b1f4de1522c20b67acc132937cf82e
76b1f4de1522c20b67acc132937cf82e Hash Not Found
You can even do both SHA-1 and MD5 if you want:
# hfind -i nsrl-sha1 /usr/local/hash/nsrl/NSRLFile.txt
# hfind /usr/local/hash/nsrl/NSRLFile.txt
76b1f4de1522c20b67acc132937cf82e
80001A80B3F1B80076B297CEE8805AAA04E1B5BA
76b1f4de1522c20b67acc132937cf82e Hash Not Found
80001A80B3F1B80076B297CEE8805AAA04E1B5BA thrdcore.cpp
To make a database of critical binaries of a trusted system, use 'md5sum':
# md5sum /bin/* /sbin/* /usr/bin/* /usr/bin/* /usr/local/bin/* /usr/local/sbin/* > system.md5
# hfind -i md5sum system.md5
To look entries up, the following will work:
# hfind system.md5 76b1f4de1522c20b67acc132937cf82e
76b1f4de1522c20b67acc132937cf82e Hash Not Found
or
# md5sum -q /bin/* | hfind system.md5
928682269cd3edb1acdf9a7f7e606ff2 /bin/bash
<...>
or
# md5sum -q /bin/* > bin.md5
# hfind -f bin.md5 system.md5
928682269cd3edb1acdf9a7f7e606ff2 /bin/bash
<...>
SEE ALSO sorter(1)
The NIST National Software Reference Library (NSRL) can be found at www.nsrl.nist.gov.
LICENSE
Distributed under the Common Public License, found in the cpl1.0.txt file in the The Sleuth Kit licenses directory.
AUTHOR
Brian Carrier <carrier at sleuthkit dot org>
Send documentation updates to <doc-updates at sleuthkit dot org>
HFIND(1)