Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Re^3: hash to count words

by NetWallah (Canon)
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.

Replies are listed 'Best First'.
Re^4: hash to count words
by AnomalousMonk (Chancellor) 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 = '';
            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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://993519]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (5)
As of 2018-03-18 00:51 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (228 votes). Check out past polls.