http://www.perlmonks.org?node_id=1012677


in reply to Correct pathway to a file

Dear Monk,
Are you actually reading the replies you get or are you causing me to waste my time? If you actually read my replies to your previous posting on this subject you'd have the answer.

Does this ring a bell?

sub countWords { # Path and filename are passed to this sub. Join the two for the fu +lly # qualified path name. my $fname=join("/",@_); open FIN,"< $fname" or die "$fname:$!"; my @lines=<FIN>; chomp @lines; close FIN; my $count=0; foreach my $line(@lines){ map { $count++ } split (/[\s\t\n]+/,$line); } printf "There are %d words in %s\n",$count,$fname; }


Peter L. Berghold -- Unix Professional
Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg

Replies are listed 'Best First'.
Re^2: Correct pathway to a file
by Dr Manhattan (Beadle) on Jan 10, 2013 at 19:26 UTC

    Hi blue cowdawg

    I tried this within the sub

    my $fname = join("/",$_[0]); my $INP = $_[1]; open (FIN, "<$fname") or die "$fname$!"; my @words =<FIN>; chomp @words; close FIN;

    because I sent my sub the file+directory like you showed, and also an integer which has to be used later in the sub.

    But even the short script you sent earlier only works if I have copies of the text file at the directory where I specify and also where my perl script is stored.

          because I sent my sub the file+directory like you showed, and also an integer which has to be used later in the sub.

      OK: let me spell something out here... Peruse the following code and I'm going to add line numbers so I can point to specific lines in my follow up explaination.

      1. sub processFile { 2. my ($dir,$node,$someNumber)=@_; | | handwaving. }
      First let me comment that the array @_ contains all arguments passed to the sub. The code I just supplied is the equivalent to:
      1, sub processFile { 2. my $dir=shift; #@_ is implied! 3. my $node=shift; 4, my $someNumber=shift;
      I'm not sure what you thought you were accomplishing by referencing $_[0] given that refers to the scalar in the array with the lowest index. You needed $_[0] to have a "/" and $_[1] concatenated.

      When you are given answers to your questions here on PM please take the time not only to fully read the answer but take the trouble of actually learning what the answer means.


      Peter L. Berghold -- Unix Professional
      Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg