mattdope has asked for the wisdom of the Perl Monks concerning the following question:

Hi there, was hoping someone could help. I have fetched two columns (username and password) from a database using
$hash_ref = $sth->fetchrow_hashref)
I am now looking to access each column seperately to search for values. When I use:
if($username eq $hash_ref->{username})
to access this column I keep getting errors. Could anyone suggest what I might be doing wrong?

Replies are listed 'Best First'.
Re: accessing values in hash
by Corion (Patriarch) on Sep 03, 2006 at 22:11 UTC

    Your first error is that you don't tell us the error message.

    You might want to inspect the data structure you get back:

    use Data::Dumper; print Dumper $hash_ref;

    In general, it helps very much to give a small, self-contained piece of code that reproduces the error. Even much better if that piece of code needs no external infrastructure like a database or whatnot.

      ok, i now have:
      #fetch two colums (username , password)
      while($hash_ref = $sth->fetchrow_hashref){ #dereference my %values=%$hash_ref; #print out usernames print $values{'username'};}
      I can print out all the usernames from the database but do you know how I can match one of these usernames to
      $testUsername
      I need to print off something like "username matched"

        OK..let me get this straight. You're querying a database to get all usernames so you can use Perl to see if a given username is present?

        If that's the case -- and this isn't a rather odd homework assignment -- make the database do the work and write the query to see if the username is present. This way Perl would get a true/false answer from the database, and you wouldn't have to check 8,000,000 usernames

        In Perl, one way to do it would be to load all the usernames into an array and use grep

        $yes = grep { /$username/ } @usernames;

        emc

        Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.

        Albert Einstein
Re: accessing values in hash
by swampyankee (Parson) on Sep 03, 2006 at 23:23 UTC

    You didn't provide enough information for anyone to give you any meaningful assistance.

    Obviously, check to see if everything is defined and the database request didn't return an error (such as "item not found").

    emc

    Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.

    Albert Einstein
      hi there, there is no problem accessing the database. I am using;
      $sth = $dbh->prepare("select username, password from reg"); $sth->execute;
      and then the previous code I have posted to fetch and display it. But I need to print out whether the username i have it $testUsername matches one of the usernames returned from the database

        Sorry, I posted before you posted your answer.

        emc

        Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.

        Albert Einstein