Beefy Boxes and Bandwidth Generously Provided by pair Networks Cowboy Neal with Hat
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^3: hash to count words

by NetWallah (Monsignor)
on Sep 13, 2012 at 15:46 UTC ( #993519=note: print w/ replies, xml ) Need Help??


in reply to Re^2: hash to count words
in thread hash to count words

Ok - I'll take a stab at answering your question "What am I doing wrong?" :

  • Not using 'strict'. (add "use strict;" to the top of your code)
  • Not using canonical "open" with local filehandle. (Try : open(my $f, "<", $file) or die "Cannot open '$file':$!";)
  • Not declaring variables (use my @array; (follows from "use strict"))
  • Not formatting/aligning your code for visibility
  • Not following advice (davido's code works for what you need)
  • Not reading how hashes work
  • Not closing the file handle you opened.
  • Not posing your question(s) clearly
  • Not showing what you expect as a result of your code
  • Not showing sample data
The answer to the question in your previous post on the meaning of "/g" can be found by running "perldoc perlre".

             I hope life isn't a big joke, because I don't get it.
                   -SNL


Comment on Re^3: hash to count words
Re^4: hash to count words
by AnomalousMonk (Monsignor) on Sep 13, 2012 at 16:18 UTC

    Please allow an addition to the list: Not bothering to fix a previous post known to be problematic.

      Now that I have that under control, how do I print the output of the script to a file? I cannot figure it out. Thanks in advance and of course here is my coding.
      #!/usr/bin/perl -w foreach $file (@ARGV) { open (IN, $file) or die "Cannot open file '$file' : $!\n"; while(<>) { $line = <IN>; @array = split (' ', $line); foreach $word (@array){ $word =~ s/[^\w\s]//g; $word = lc ($word); $wordcount{$word} += 1; } } foreach $key (keys %wordcount) { print "Word: $key " . ($wordcount{$key}) . "\n"; } } print ("scriptOutput\n\n");
        Now that I have that under control...

        If 'that' refers to the lack code tags in your OP, the situation is still out of control. A  <code> tag is closed by a  </code> tag, not by a  </c> tag. Please see Markup in the Monastery. Please check the effects of your changes.

        Printing to a file usually involves supplying an output file handle (see open) to the print statement. E.g.:
            my $filename = 'file.name';
            open my $fh_out, '>', $filename or die "opening '$filename': $!";
            my $something_to_output_to_file = your_process();
            print $fh_out "here is something for the file \n";
            print $fh_out $something_to_output_to_file;
            print $fh_out "that's all, folks! \n";
            close $fh_out or die "closing '$filename': $!";

        Please consider re-reading the answers you have been given in this and related threads. Please consider using lexical filehandles (as in the example given above). See also autodie.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://993519]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (5)
As of 2014-04-19 02:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (475 votes), past polls