FAQ
What is the best way to compare hash of arrays against each
other? Actually, a better way to ask my question would be...

I have a hash called %player_info that contains 4 elements per hash
reference. I want to compare just the key of the hash against against
another hash that I will build from replies from the client (yes's and
no's). Difficult to follow? Let me explain what I am trying to accomplish:

I am building a voting script. This is particularly tough because of the
things I need to pay attention to such as disallowing corrupt votes by
someone voting multiple times. What I want to do is allow players to
revote. Their new vote will simply overwrite the first vote. There is a
list of other things I want to do but these things all pivot around how I
am going to do comparisons.

I perhaps haven't asked this question in the best way but I hope the
question is understood. Any thoughts and assistance would be greatly
appreciated.

TIA!



- Jim

-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
http://www.perlmonks.org/index.pl?node_id=67861&lastnode_id=67861

-----BEGIN PERL GEEK CODE BLOCK----- ------BEGIN GEEK CODE BLOCK------
Version: 0.01 Version: 3.12
P++>*@$c?P6?R+++>++++@$M GIT/CM/J d++(--) s++:++ a-
++++$O!MA->++++E!> PU-->+++BD C++++(+) UB++++$L++++$S++++$
$[email protected]!>++++(-)$S++++@$X?WP+>++++MO!>+++ P++(+)>+++++ L+++(++++)>+++++$ !E*
+PP+++>++++n-CO?PO!o >++++G W++(+++) N+ o !K w--- PS---(-)@ PE
*(!)$A-->++++@$Ee---(-)Ev++uL++>*@$uB+ Y+>+++ PGP t+(+++)>+++@ 5- X++ R@
*@$uS+>*@$uH+uo+w-@$m! tv+ b? DI-(+++) D+++(++) G(++++)
------END PERL GEEK CODE BLOCK------ ------END GEEK CODE BLOCK------

Search Discussions

  • Tom Yarrish at Jul 20, 2001 at 2:37 pm
    Didn't Randall do a voting script for an article in Linux Journal/Mag or
    TPJ recently? You might want to look at that.

    Thanks,
    Tom

    --
    #!/usr/bin/perl -w # 526-byte qrpff, Keith Winstein and Marc Horowitz
    <[email protected]> # MPEG 2 PS VOB file on stdin -> descrambled output
    on stdout # arguments: title key bytes in least to most-significant order
    $_='while(read+STDIN,$_,2048){$a=29;$c=142;if((@a=unx"C*",$_)[20]&48){$h=5;
    $_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$d=
    unxV,xb25,$_;$b=73;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=($t=255)&($d
    12^$d>>4^$d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9
    ,$_=(map{$_%16or$t^=$c^=($m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t
    ^=(72,@z=(64,72,$a^=12*($_%16-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271))
    [$_]^(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eval
    On Fri, 20 Jul 2001, Jim Conner wrote:

    What is the best way to compare hash of arrays against each
    other? Actually, a better way to ask my question would be...

    I have a hash called %player_info that contains 4 elements per hash
    reference. I want to compare just the key of the hash against against
    another hash that I will build from replies from the client (yes's and
    no's). Difficult to follow? Let me explain what I am trying to accomplish:

    I am building a voting script. This is particularly tough because of the
    things I need to pay attention to such as disallowing corrupt votes by
    someone voting multiple times. What I want to do is allow players to
    revote. Their new vote will simply overwrite the first vote. There is a
    list of other things I want to do but these things all pivot around how I
    am going to do comparisons.

    I perhaps haven't asked this question in the best way but I hope the
    question is understood. Any thoughts and assistance would be greatly
    appreciated.

    TIA!



    - Jim

    -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
    http://www.perlmonks.org/index.pl?node_id=67861&lastnode_id=67861

    -----BEGIN PERL GEEK CODE BLOCK----- ------BEGIN GEEK CODE BLOCK------
    Version: 0.01 Version: 3.12
    P++>*@$c?P6?R+++>++++@$M GIT/CM/J d++(--) s++:++ a-
    ++++$O!MA->++++E!> PU-->+++BD C++++(+) UB++++$L++++$S++++$
    $[email protected]!>++++(-)$S++++@$X?WP+>++++MO!>+++ P++(+)>+++++ L+++(++++)>+++++$ !E*
    +PP+++>++++n-CO?PO!o >++++G W++(+++) N+ o !K w--- PS---(-)@ PE
    *(!)$A-->++++@$Ee---(-)Ev++uL++>*@$uB+ Y+>+++ PGP t+(+++)>+++@ 5- X++ R@
    *@$uS+>*@$uH+uo+w-@$m! tv+ b? DI-(+++) D+++(++) G(++++)
    ------END PERL GEEK CODE BLOCK------ ------END GEEK CODE BLOCK------

  • Jim Conner at Jul 20, 2001 at 5:30 pm
    Really?? I am not familiar with the magazine (well, at least not with a
    site for the magazine). Gotta URL?

    Thanks!

    - Jim

    At 09:30 AM 07.20.2001 -0500, Tom Yarrish wrote:
    Didn't Randall do a voting script for an article in Linux Journal/Mag or
    TPJ recently? You might want to look at that.

    Thanks,
    Tom

    --
    #!/usr/bin/perl -w # 526-byte qrpff, Keith Winstein and Marc Horowitz
    <[email protected]> # MPEG 2 PS VOB file on stdin -> descrambled output
    on stdout # arguments: title key bytes in least to most-significant order
    $_='while(read+STDIN,$_,2048){$a=29;$c=142;if((@a=unx"C*",$_)[20]&48){$h=5;
    $_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$d=
    unxV,xb25,$_;$b=73;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=($t=255)&($d
    12^$d>>4^$d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9
    ,$_=(map{$_%16or$t^=$c^=($m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t
    ^=(72,@z=(64,72,$a^=12*($_%16-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271))
    [$_]^(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eval
    On Fri, 20 Jul 2001, Jim Conner wrote:

    What is the best way to compare hash of arrays against each
    other? Actually, a better way to ask my question would be...

    I have a hash called %player_info that contains 4 elements per hash
    reference. I want to compare just the key of the hash against against
    another hash that I will build from replies from the client (yes's and
    no's). Difficult to follow? Let me explain what I am trying to
    accomplish:
    I am building a voting script. This is particularly tough because of the
    things I need to pay attention to such as disallowing corrupt votes by
    someone voting multiple times. What I want to do is allow players to
    revote. Their new vote will simply overwrite the first vote. There is a
    list of other things I want to do but these things all pivot around how I
    am going to do comparisons.

    I perhaps haven't asked this question in the best way but I hope the
    question is understood. Any thoughts and assistance would be greatly
    appreciated.

    TIA!



    - Jim

    -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
    http://www.perlmonks.org/index.pl?node_id=67861&lastnode_id=67861

    -----BEGIN PERL GEEK CODE BLOCK----- ------BEGIN GEEK CODE BLOCK------
    Version: 0.01 Version: 3.12
    P++>*@$c?P6?R+++>++++@$M GIT/CM/J d++(--) s++:++ a-
    ++++$O!MA->++++E!> PU-->+++BD C++++(+) UB++++$L++++$S++++$
    $[email protected]!>++++(-)$S++++@$X?WP+>++++MO!>+++ P++(+)>+++++
    L+++(++++)>+++++$ !E*
    +PP+++>++++n-CO?PO!o >++++G W++(+++) N+ o !K w---
    PS---(-)@ PE
    *(!)$A-->++++@$Ee---(-)Ev++uL++>*@$uB+ Y+>+++ PGP t+(+++)>+++@ 5-
    X++ R@
    *@$uS+>*@$uH+uo+w-@$m! tv+ b? DI-(+++) D+++(++) G(++++)
    ------END PERL GEEK CODE BLOCK------ ------END GEEK CODE BLOCK------


    --
    To unsubscribe, e-mail: [email protected]
    For additional commands, e-mail: [email protected]


    - Jim

    -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
    http://www.perlmonks.org/index.pl?node_id=67861&lastnode_id=67861

    -----BEGIN PERL GEEK CODE BLOCK----- ------BEGIN GEEK CODE BLOCK------
    Version: 0.01 Version: 3.12
    P++>*@$c?P6?R+++>++++@$M GIT/CM/J d++(--) s++:++ a-
    ++++$O!MA->++++E!> PU-->+++BD C++++(+) UB++++$L++++$S++++$
    $[email protected]!>++++(-)$S++++@$X?WP+>++++MO!>+++ P++(+)>+++++ L+++(++++)>+++++$ !E*
    +PP+++>++++n-CO?PO!o >++++G W++(+++) N+ o !K w--- PS---(-)@ PE
    *(!)$A-->++++@$Ee---(-)Ev++uL++>*@$uB+ Y+>+++ PGP t+(+++)>+++@ 5- X++ R@
    *@$uS+>*@$uH+uo+w-@$m! tv+ b? DI-(+++) D+++(++) G(++++)
    ------END PERL GEEK CODE BLOCK------ ------END GEEK CODE BLOCK------
  • Randal L. Schwartz at Jul 20, 2001 at 3:36 pm
    "Jim" == Jim Conner writes:
    Jim> I am building a voting script. This is particularly tough because of
    Jim> the things I need to pay attention to such as disallowing corrupt
    Jim> votes by someone voting multiple times. What I want to do is allow
    Jim> players to revote. Their new vote will simply overwrite the first
    Jim> vote. There is a list of other things I want to do but these things
    Jim> all pivot around how I am going to do comparisons.

    The "someone" part is hard. How do you tell if two uncorrelated hits
    are from the same person?

    Hint: you lose if you mention

    cookies
    IP address
    browser signature
    javascript

    :-)

    But I did cheat a bit, and use "same IP address within an hour" for
    my unscientific polling mechanism for a recent WT column, at

    http://www.stonehenge.com/merlyn/WebTechniques/col59.html

    --
    Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
    <[email protected]> <URL:http://www.stonehenge.com/merlyn/>
    Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
    See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
  • Eric J. Wisti at Jul 20, 2001 at 3:57 pm
    The one question that comes to mind:

    What about AOL users, where there could be hundreds coming from the 'same
    ip' (cache server)? Libraries and cyber cafes??

    It may not be an issue for Jim, but it is still something to remember.
    Many large companies and isps use cache servers, so ALL users appear to
    come from one ip. Like Randal mentions, the isn't really a GOOD, SAFE
    way to insure that someone doesn't vote twice, unless it is a secure site
    with logins required or other unique information is used.

    Some surveys that I have participated in, send out a unique 'password' that
    is then logged and cannot be used to vote again. But these surveys are
    from companies that have customer information for me and will only send me
    one password.
    On 20 Jul 2001, Randal L. Schwartz wrote:

    Date: 20 Jul 2001 08:36:44 -0700
    From: Randal L. Schwartz <[email protected]>
    To: [email protected]
    Subject: Re: hash comparisons...
    "Jim" == Jim Conner <[email protected]> writes:
    Jim> I am building a voting script. This is particularly tough because of
    Jim> the things I need to pay attention to such as disallowing corrupt
    Jim> votes by someone voting multiple times. What I want to do is allow
    Jim> players to revote. Their new vote will simply overwrite the first
    Jim> vote. There is a list of other things I want to do but these things
    Jim> all pivot around how I am going to do comparisons.

    The "someone" part is hard. How do you tell if two uncorrelated hits
    are from the same person?

    Hint: you lose if you mention

    cookies
    IP address
    browser signature
    javascript

    :-)

    But I did cheat a bit, and use "same IP address within an hour" for
    my unscientific polling mechanism for a recent WT column, at

    http://www.stonehenge.com/merlyn/WebTechniques/col59.html

    --
    Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
    <[email protected]> <URL:http://www.stonehenge.com/merlyn/>
    Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
    See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!

    --
    To unsubscribe, e-mail: [email protected]
    For additional commands, e-mail: [email protected]

    Eric Wisti
    Kinetic, Inc.
    (651) 848-0477
  • Jim Conner at Jul 20, 2001 at 5:38 pm
    Good point. Fortunately, this system will not have to reply on any such
    thing. The votes are not critical either (ie its just gonna be used for
    the ability for players to change or rarther vote to change certrain
    aspects of the game). My resolution for this is that the minute they
    connect to the server the server assigns them a userid. It is sequentially
    given out but once a player leaves that userid can not be used again until
    the server is reset. The chance that a player (I monitor by IP address)
    gets the same userid within the same 30 minute or 1 hour game is very unlikely.

    Thanks guys.
    - Jim
    At 10:57 AM 07.20.2001 -0500, Eric J. Wisti wrote:

    The one question that comes to mind:

    What about AOL users, where there could be hundreds coming from the 'same
    ip' (cache server)? Libraries and cyber cafes??

    It may not be an issue for Jim, but it is still something to remember.
    Many large companies and isps use cache servers, so ALL users appear to
    come from one ip. Like Randal mentions, the isn't really a GOOD, SAFE
    way to insure that someone doesn't vote twice, unless it is a secure site
    with logins required or other unique information is used.

    Some surveys that I have participated in, send out a unique 'password' that
    is then logged and cannot be used to vote again. But these surveys are
    from companies that have customer information for me and will only send me
    one password.
    On 20 Jul 2001, Randal L. Schwartz wrote:

    Date: 20 Jul 2001 08:36:44 -0700
    From: Randal L. Schwartz <[email protected]>
    To: [email protected]
    Subject: Re: hash comparisons...
    "Jim" == Jim Conner <[email protected]> writes:
    Jim> I am building a voting script. This is particularly tough because of
    Jim> the things I need to pay attention to such as disallowing corrupt
    Jim> votes by someone voting multiple times. What I want to do is allow
    Jim> players to revote. Their new vote will simply overwrite the first
    Jim> vote. There is a list of other things I want to do but these things
    Jim> all pivot around how I am going to do comparisons.

    The "someone" part is hard. How do you tell if two uncorrelated hits
    are from the same person?

    Hint: you lose if you mention

    cookies
    IP address
    browser signature
    javascript

    :-)

    But I did cheat a bit, and use "same IP address within an hour" for
    my unscientific polling mechanism for a recent WT column, at

    http://www.stonehenge.com/merlyn/WebTechniques/col59.html

    --
    Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
    <[email protected]> <URL:http://www.stonehenge.com/merlyn/>
    Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
    See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
    --
    To unsubscribe, e-mail: [email protected]
    For additional commands, e-mail: [email protected]

    Eric Wisti
    Kinetic, Inc.
    (651) 848-0477


    - Jim

    -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
    http://www.perlmonks.org/index.pl?node_id=67861&lastnode_id=67861

    -----BEGIN PERL GEEK CODE BLOCK----- ------BEGIN GEEK CODE BLOCK------
    Version: 0.01 Version: 3.12
    P++>*@$c?P6?R+++>++++@$M GIT/CM/J d++(--) s++:++ a-
    ++++$O!MA->++++E!> PU-->+++BD C++++(+) UB++++$L++++$S++++$
    $[email protected]!>++++(-)$S++++@$X?WP+>++++MO!>+++ P++(+)>+++++ L+++(++++)>+++++$ !E*
    +PP+++>++++n-CO?PO!o >++++G W++(+++) N+ o !K w--- PS---(-)@ PE
    *(!)$A-->++++@$Ee---(-)Ev++uL++>*@$uB+ Y+>+++ PGP t+(+++)>+++@ 5- X++ R@
    *@$uS+>*@$uH+uo+w-@$m! tv+ b? DI-(+++) D+++(++) G(++++)
    ------END PERL GEEK CODE BLOCK------ ------END GEEK CODE BLOCK------
  • Jim Conner at Jul 20, 2001 at 5:33 pm
    If the userid and the IP address are the same then you have the same
    person. Another thing I should mention is that the way the game goes it is
    impossible to have the same IP and userid together at the time within the
    same voting session (yup...gonna use voting sessions).

    ;) -Jim
    At 08:36 AM 07.20.2001 -0700, Randal L. Schwartz wrote:
    "Jim" == Jim Conner <[email protected]> writes:
    Jim> I am building a voting script. This is particularly tough because of
    Jim> the things I need to pay attention to such as disallowing corrupt
    Jim> votes by someone voting multiple times. What I want to do is allow
    Jim> players to revote. Their new vote will simply overwrite the first
    Jim> vote. There is a list of other things I want to do but these things
    Jim> all pivot around how I am going to do comparisons.

    The "someone" part is hard. How do you tell if two uncorrelated hits
    are from the same person?

    Hint: you lose if you mention

    cookies
    IP address
    browser signature
    javascript

    :-)

    But I did cheat a bit, and use "same IP address within an hour" for
    my unscientific polling mechanism for a recent WT column, at

    http://www.stonehenge.com/merlyn/WebTechniques/col59.html

    --
    Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
    <[email protected]> <URL:http://www.stonehenge.com/merlyn/>
    Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
    See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!

    --
    To unsubscribe, e-mail: [email protected]
    For additional commands, e-mail: [email protected]


    - Jim

    -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
    http://www.perlmonks.org/index.pl?node_id=67861&lastnode_id=67861

    -----BEGIN PERL GEEK CODE BLOCK----- ------BEGIN GEEK CODE BLOCK------
    Version: 0.01 Version: 3.12
    P++>*@$c?P6?R+++>++++@$M GIT/CM/J d++(--) s++:++ a-
    ++++$O!MA->++++E!> PU-->+++BD C++++(+) UB++++$L++++$S++++$
    $[email protected]!>++++(-)$S++++@$X?WP+>++++MO!>+++ P++(+)>+++++ L+++(++++)>+++++$ !E*
    +PP+++>++++n-CO?PO!o >++++G W++(+++) N+ o !K w--- PS---(-)@ PE
    *(!)$A-->++++@$Ee---(-)Ev++uL++>*@$uB+ Y+>+++ PGP t+(+++)>+++@ 5- X++ R@
    *@$uS+>*@$uH+uo+w-@$m! tv+ b? DI-(+++) D+++(++) G(++++)
    ------END PERL GEEK CODE BLOCK------ ------END GEEK CODE BLOCK------
  • Randal L. Schwartz at Jul 20, 2001 at 5:47 pm
    "Jim" == Jim Conner writes:
    Jim> If the userid and the IP address are the same then you have the same
    Jim> person.

    This "userid" is something artificial you're creating then... because
    normal HTTP doesn't have such a concept. Are you voting for people
    "logged in" using your auth mechanism? If that's the case, then you
    can use that "logged in" name, and you still don't need IP address in
    that case. In fact, you really don't want to use IP, if they're
    behind a firewall or on AOL (every hit on AOL comes from a different
    address, even in the same session).

    Jim> Another thing I should mention is that the way the game goes it
    Jim> is impossible to have the same IP and userid together at the time
    Jim> within the same voting session (yup...gonna use voting sessions).

    Again, if you have a userid, then IGNORE IP.

    --
    Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
    <[email protected]> <URL:http://www.stonehenge.com/merlyn/>
    Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
    See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
  • Jim Conner at Jul 20, 2001 at 10:40 pm
    Actually, Im not doing anything over http. This is a completely different
    server process.

    - Jim
    At 10:47 AM 07.20.2001 -0700, Randal L. Schwartz wrote:
    "Jim" == Jim Conner <[email protected]> writes:
    Jim> If the userid and the IP address are the same then you have the same
    Jim> person.

    This "userid" is something artificial you're creating then... because
    normal HTTP doesn't have such a concept. Are you voting for people
    "logged in" using your auth mechanism? If that's the case, then you
    can use that "logged in" name, and you still don't need IP address in
    that case. In fact, you really don't want to use IP, if they're
    behind a firewall or on AOL (every hit on AOL comes from a different
    address, even in the same session).

    Jim> Another thing I should mention is that the way the game goes it
    Jim> is impossible to have the same IP and userid together at the time
    Jim> within the same voting session (yup...gonna use voting sessions).

    Again, if you have a userid, then IGNORE IP.

    --
    Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
    <[email protected]> <URL:http://www.stonehenge.com/merlyn/>
    Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
    See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!

    --
    To unsubscribe, e-mail: [email protected]
    For additional commands, e-mail: [email protected]


    - Jim

    -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
    http://www.perlmonks.org/index.pl?node_id=67861&lastnode_id=67861

    -----BEGIN PERL GEEK CODE BLOCK----- ------BEGIN GEEK CODE BLOCK------
    Version: 0.01 Version: 3.12
    P++>*@$c?P6?R+++>++++@$M GIT/CM/J d++(--) s++:++ a-
    ++++$O!MA->++++E!> PU-->+++BD C++++(+) UB++++$L++++$S++++$
    $[email protected]!>++++(-)$S++++@$X?WP+>++++MO!>+++ P++(+)>+++++ L+++(++++)>+++++$ !E*
    +PP+++>++++n-CO?PO!o >++++G W++(+++) N+ o !K w--- PS---(-)@ PE
    *(!)$A-->++++@$Ee---(-)Ev++uL++>*@$uB+ Y+>+++ PGP t+(+++)>+++@ 5- X++ R@
    *@$uS+>*@$uH+uo+w-@$m! tv+ b? DI-(+++) D+++(++) G(++++)
    ------END PERL GEEK CODE BLOCK------ ------END GEEK CODE BLOCK------

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupbeginners @
categoriesperl
postedJul 20, '01 at 4:27a
activeJul 20, '01 at 10:40p
posts9
users4
websiteperl.org

People

Translate

site design / logo © 2023 Grokbase