Recently one of my code gave the err message
Can't use string ("query") as an ARRAY ref while "strict refs" in use at ...
I have checked the file and the point where it was failing was when the file had the query as "query" The file has multiple number of fields seperated by a fixed delimiter so the point where it failed was in the line
query us 123 --> this line it failed queue ca 456
A snippet of the code which i used is as follows
if ($query eq $hash{'query'}){ push @{$hash{$query}},{'domain' => $domain ,'count' => $count} +; $tot_count += $count; } else{ my $qid = $hash{'query'}; .... some operations %hash=(); $hash{'query'}= $query; push @{$hash{$query}},{'domain' => $domain ,'count' => $count} +; $tot_count = $count; }
I have fixed the code and changed the hash structure and it works fine now.
But i do not under stand why the error would be thrown if we have to assign $hash{'query'} = "query";
Can the knowledgable monks explain me what does the error mean and why it failed.

Edit by GrandFather - replaced pre tags with code tags, to prevent distortion of site layout and allow code extraction.


In reply to Can't use string ("query") as an ARRAY ref error by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.