Re: hsh file vs. txt file
[Re: AWEstun]
#199099
09/05/08 12:11 AM
|
Joined: Jul 2006
Posts: 3,740
Wims
Hoopy frood
|
Hoopy frood
Joined: Jul 2006
Posts: 3,740 |
It's probably because you don't use a value when adding a item ($$1) to the hash table : /addbot //hadd -s bots $$1 so $hget(table,$2) return the value, which is $null.Your $hfind work because it search in table for an item, not a value (you can search for value with the propriety .data, read the help file) Edit : In the loop of RusselB, only $hget(<table>,%a).item will return something.You should use something like : /addbot //hadd -s bots $$1 1 With this, $hget(bots,host) will return 1 if the host exist, and $null if doesn't.
Last edited by Wims; 09/05/08 12:19 AM.
Looking for a good help channel about mIRC? Check #mircscripting @ irc.swiftirc.net
|
|
|
Re: hsh file vs. txt file
[Re: Wims]
#199102
09/05/08 01:17 AM
|
Joined: May 2008
Posts: 329
AWEstun
OP
Fjord artisan
|
OP
Fjord artisan
Joined: May 2008
Posts: 329 |
Russel's loop worked as he wrote it. I tested it. ???
//var %a = 1, %b = $hget(<table>,0).item | while %a <= %b { echo -a $hget(<table>,%a).item is $hget(<table>,%a) | inc %a }
I see what you are saying about the '1' as the first item in the field for the host, which is the way a table works: 1.2.3.4 1 on a /hget for 1.2.3.4 /hget would return a 'true' thus letting the 'if' continue.
I registered; you should too.
|
|
|
Re: hsh file vs. txt file
[Re: AWEstun]
#199103
09/05/08 01:45 AM
|
Joined: Jul 2006
Posts: 3,740
Wims
Hoopy frood
|
Hoopy frood
Joined: Jul 2006
Posts: 3,740 |
I don't said that his code doesn't work, i just said the $hget value will be $null with your exemple
Looking for a good help channel about mIRC? Check #mircscripting @ irc.swiftirc.net
|
|
|
Re: hsh file vs. txt file
[Re: Wims]
#199105
09/05/08 01:56 AM
|
Joined: May 2008
Posts: 329
AWEstun
OP
Fjord artisan
|
OP
Fjord artisan
Joined: May 2008
Posts: 329 |
I don't said that his code doesn't work, i just said the $hget value will be $null with your exemple Ah.
I registered; you should too.
|
|
|
Re: hsh file vs. txt file
[Re: AWEstun]
#199110
09/05/08 02:15 AM
|
Joined: Aug 2004
Posts: 7,252
RusselB
Hoopy frood
|
Hoopy frood
Joined: Aug 2004
Posts: 7,252 |
Thanks. I just wanted to verify the 6 hosts in the table. They are there.
Do you have any idea why the $hfind works for me, but the $hget doesn't? Post the two codes that you tried.. the $hfind that worked and the $hget that didn't. I'd be willing to bet that you're not supplying $hget with the correct information to get the proper return, but by comparing the two codes, I should be able to tell and, in turn, tell you what you're doing wrong.
|
|
|
Re: hsh file vs. txt file
[Re: RusselB]
#199132
09/05/08 05:13 AM
|
Joined: May 2008
Posts: 329
AWEstun
OP
Fjord artisan
|
OP
Fjord artisan
Joined: May 2008
Posts: 329 |
[quote]Post the two codes that you tried.. the $hfind that worked and the $hget that didn't. I'd be willing to bet that you're not supplying $hget with the correct information to get the proper return, but by comparing the two codes, I should be able to tell and, in turn, tell you what you're doing wrong.
$2 = 1.2.3.4 Works: if ($hfind(bots,$2,1)) { Doesn't work: if ($hget(bots,$2)) { The Bot table is: bots 1.2.3.4 bots 5.6.7.8 bots 2.3.4.5 bots 6.7.8.9 bots 3.4.5.6 bots 7.8.9.0
I registered; you should too.
|
|
|
Re: hsh file vs. txt file
[Re: AWEstun]
#199134
09/05/08 05:15 AM
|
Joined: Oct 2003
Posts: 3,918
argv0
Hoopy frood
|
Hoopy frood
Joined: Oct 2003
Posts: 3,918 |
Then $2 isnt the key
You'd want to fix your hash table to set whatever $2 is as the key so that you can retrieve the data quicker.
Looking at your original posts it seems the HOST is $2, so you'd want to add THAT as the key, not the nickname.
- argv[0] on EFnet #mIRC - "Life is a pointer to an integer without a cast"
|
|
|
Re: hsh file vs. txt file
[Re: argv0]
#199136
09/05/08 05:20 AM
|
Joined: May 2008
Posts: 329
AWEstun
OP
Fjord artisan
|
OP
Fjord artisan
Joined: May 2008
Posts: 329 |
Then $2 isnt the key
You'd want to fix your hash table to set whatever $2 is as the key so that you can retrieve the data quicker.
Looking at your original posts it seems the HOST is $2, so you'd want to add THAT as the key, not the nickname. the variables that get passed in are %nick %host %chan so wouldn't $2 be correct as the key? That's the way I had it. if ($hget(bots,$2)) { ???
I registered; you should too.
|
|
|
Re: hsh file vs. txt file
[Re: AWEstun]
#199145
09/05/08 11:17 AM
|
Joined: May 2008
Posts: 329
AWEstun
OP
Fjord artisan
|
OP
Fjord artisan
Joined: May 2008
Posts: 329 |
Okay here is what I did:
ITEM | DATA --------------- 1.2.3.4 1 5.6.7.8 1 2.3.4.5 1 3.4.5.6 1
So now when I type this on the command line: //echo -s $hget(bots,2.3.4.5) I get this result: 1 Which should let the 'if' execute.
I registered; you should too.
|
|
|
Re: hsh file vs. txt file
[Re: AWEstun]
#199151
09/05/08 06:35 PM
|
Joined: May 2008
Posts: 329
AWEstun
OP
Fjord artisan
|
OP
Fjord artisan
Joined: May 2008
Posts: 329 |
This works and I have a better understanding of hash files now. Originally I thought an item could be used as it's data (i.e. just the item without it's data). Is that even possible with a hash table? So, now if I want to use a hash table for just userhost, there needs to be something in the data field, like the screen name. Right? I.E.
Item | DATA ------------------------------------------------- screenname1 screenname[12345678_12345678@1.2.3.4]
Anyone have any ideas for a simple lil' script to convert a HUGE text file to a hash table/file?
I registered; you should too.
|
|
|
Re: hsh file vs. txt file
[Re: AWEstun]
#199152
09/05/08 06:50 PM
|
Joined: Oct 2003
Posts: 3,918
argv0
Hoopy frood
|
Hoopy frood
Joined: Oct 2003
Posts: 3,918 |
"without data" would mean $null for the data value, but you might as well put a value to make it easier to $hget like you did above. 1 is a good choice, as is something like $true. Of course, you could also put the nickname as the data field, that way you could do reverse lookups (reverse lookups are done with $hfind)... this is probably required by your script later on anyway.
Converting a text file depends on what your text file format is like... since text is just text-- you need to define some format to be able to parse it into item / data.
- argv[0] on EFnet #mIRC - "Life is a pointer to an integer without a cast"
|
|
|
Re: hsh file vs. txt file
[Re: argv0]
#199156
09/05/08 09:10 PM
|
Joined: May 2008
Posts: 329
AWEstun
OP
Fjord artisan
|
OP
Fjord artisan
Joined: May 2008
Posts: 329 |
In the text file each line has a userhost:
screenname[12345678_12345678@1.2.3.4]
Convert to hash table format:
screenname screenname[12345678_12345678@1.2.3.4]
This way I can search the hash table by screenname (item) to get all the userhosts (data) that use that screenname.
Though I'm a lil' bit confused as to how to use the host from each of those screenname's (item) userhost (data) and search the hash table for all the screennames that use that host. Like a reverse lookup.
I registered; you should too.
|
|
|
Re: hsh file vs. txt file
[Re: AWEstun]
#199178
10/05/08 12:39 PM
|
Joined: May 2008
Posts: 329
AWEstun
OP
Fjord artisan
|
OP
Fjord artisan
Joined: May 2008
Posts: 329 |
In a hash table, how do you keep the data 'in order' so that it's saved to each item 'uniformly?' Can you you write to specific keys (?) for an item? I.E.
ITEM.......|1........2....3.....4........5........6........DATA --------------------------------------------------------------- screenname1 userhost time chan last_said userhost userhost ... screenname2 userhost .... .... ......... userhost ........ ... screenname3 userhost time chan last_said ........ ........ ...
Does this look right?
I registered; you should too.
|
|
|
Re: hsh file vs. txt file
[Re: AWEstun]
#199186
10/05/08 01:24 PM
|
Joined: Aug 2004
Posts: 7,252
RusselB
Hoopy frood
|
Hoopy frood
Joined: Aug 2004
Posts: 7,252 |
As long as all of the same parameters are passed to the table, they will be stored in the order that you pass them.
|
|
|
Re: hsh file vs. txt file
[Re: RusselB]
#199192
10/05/08 02:57 PM
|
Joined: May 2008
Posts: 329
AWEstun
OP
Fjord artisan
|
OP
Fjord artisan
Joined: May 2008
Posts: 329 |
Can someone clearify $hget for me? Lets call the hash table info. The uniformity of each item is:
screenname1 userhost time channel last_said
Then if: set %a screenname1
So would $get(info,a%) return 'userhost' or 'userhost time channel last_said'
To retrieve a particular key of an item, like time for screenname1, $get(info,a%,2).item
???
I registered; you should too.
|
|
|
Re: hsh file vs. txt file
[Re: AWEstun]
#199194
10/05/08 03:20 PM
|
Joined: Aug 2007
Posts: 334
foshizzle
Pan-dimensional mouse
|
Pan-dimensional mouse
Joined: Aug 2007
Posts: 334 |
$hget returns everthing on an item
so: example: hadd Table item test item name blah blah blah $hget(Table,Item) returns: test item name blah blah blah
This is not the signature you are looking for
|
|
|
Re: hsh file vs. txt file
[Re: foshizzle]
#199195
10/05/08 03:25 PM
|
Joined: May 2008
Posts: 329
AWEstun
OP
Fjord artisan
|
OP
Fjord artisan
Joined: May 2008
Posts: 329 |
Thanks.
I have a 10,000+ text file with userhostmasks. I need help with reading it into a hash table called iptracker. I understand how to /hmake -s iptracker 1000 | /hadd -s iptracker $nick[12345678_12345678@1.2.3.4] | hname/hsave -so text iptracker.hsh | /hload -so iptracker iptracker.hsh | /hfree iptracker | etc.
Each line in the text file is in the format: screenname[12345678_12345678@1.2.3.4
/hmake -s iptracker 1000 /hsave -so iptracker iptracker.hsh
//var %a = 1, %b = $read(iptracker.txt,1) | echo -s %a %b | while %a <= %b { var %c = $read(iptracker.txt,%a) | echo -s %c | var %nick = $gettok(%c,1,91) | /hadd -s iptracker %nick %c | inc %a | unset %nick %c }
This works... but is there a better way?
RusselB's example to read a hash file:
//var %a = 1, %b = $hget(<table>,0).item | while %a <= %b { echo -a $hget(<table>,%a).item is $hget(<table>,%a) | inc %a }
Fixed:
//var %a = 1, %b = $hget(<table>,0).item | while %a <= %b { echo -a $hget(<table>,%a).item is $hget(<table>,%a).data | inc %a }
I registered; you should too.
|
|
|
Re: hsh file vs. txt file
[Re: foshizzle]
#199207
10/05/08 05:13 PM
|
Joined: May 2008
Posts: 329
AWEstun
OP
Fjord artisan
|
OP
Fjord artisan
Joined: May 2008
Posts: 329 |
$hget returns everthing on an item
so: example: hadd Table item test item name blah blah blah $hget(Table,Item) returns: test item name blah blah blah iptracker screenname screenname[12345678_12345678@1234] $hget(iptracker) returns: iptracker %hget(iptracker,screenname) returns: screenname[12345678_12345678@1.2.3.4] %hget(iptracker,1).item returns: screenname[12345678_12345678@1.2.3.4]
I registered; you should too.
|
|
|
Re: hsh file vs. txt file
[Re: AWEstun]
#199209
10/05/08 05:51 PM
|
Joined: May 2008
Posts: 329
AWEstun
OP
Fjord artisan
|
OP
Fjord artisan
Joined: May 2008
Posts: 329 |
On second thought I'm not so sure it's a good idea to strip the nick off the user userhostmask and use that for the item. I'm reconsidering just using the whole userhostmask as the item, but then what would I use for the data part?
I registered; you should too.
|
|
|
Re: hsh file vs. txt file
[Re: AWEstun]
#199210
10/05/08 06:57 PM
|
Joined: Oct 2005
Posts: 1,741
genius_at_work
Hoopy frood
|
Hoopy frood
Joined: Oct 2005
Posts: 1,741 |
You can use anything for the data. For example: the $ctime of when the data was added, or just the nick, or simply a 1 to indicate TRUE.
-genius_at_work
|
|
|
|
|