Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re^3: Looking for pointers or optimizations.

by 2teez (Priest)
on Aug 21, 2012 at 14:05 UTC ( #988747=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Looking for pointers or optimizations.
in thread Looking for pointers or optimizations.

open (my $fh, "<", $ARGV[0]) or die "Can't open input file!"; my @words; ### The above die function should also return OS_ERROR if open funct +ion failed ### ... die "can't open file: $!"; while (<>) { ### <> will read from the STDIN not the filehandler $fh ### so that should be while(<$fh>){...} push(@words, $_); }


Comment on Re^3: Looking for pointers or optimizations.
Download Code
Re^4: Looking for pointers or optimizations.
by thmsdrew (Scribe) on Aug 21, 2012 at 14:20 UTC

    So if I put in while (<$fh>) it breaks my my $guess = <> further down in my code. I made that my $guess = <STDIN> and it works fine.

      So if I put in while (<$fh>) it breaks my my $guess = <> further down in my code. I made that my $guess = <STDIN> and it works fine.

      both while(<>){..} and $guess = <> reads from STDIN. Atleast, that is obvious from your code. So, to make while(<fh>){.. work, you have to do this:

      my ($words_file) = @ARGV; open( my $fh, "<", $words_file ) or die "can't open file: $!"; my @words; while (<$fh>) { ... } ## later you use chomp(my $guess = <STDIN>); ...
      Please, pay attention to the DIRECTION of the "arrow"
      • ">" is 'Writing to' ( OUTPUT )
      • "<" is 'Read from' ( INPUT )
      NOTE: Like I mentioned previously, you didn't close the your filehandle!!!

        Hej, You probably didn't see this (marked with ####)
        open(my $fh, "<", $ARGV[0]) or die "cannot open input file: $!"; my @words = <$fh>; close $fh or die "cannot close input file: $!"; ############## my $words = @words;
        On the other hand, I don't understand the last line - you read a file into array with my @words = <$fh>; and then you assign it to a scalar variablemy $words = @words;.

        OK, you probably have your own reasons for that but you could manipulate array as good as scalar. And you could read a file directly in a scalar variable. my $words = <$fh>;

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (7)
As of 2014-12-29 08:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (185 votes), past polls