in reply to Re: writing each array element to a unique file
in thread writing each array element to a unique file

Since you mentioned that you're new to Perl and programming in general, let me explain this line by line. I've been working introductory tutorials for work, so I figure this is good practice. My apologies if you already know some of these.

use strict; use warnings;

These two lines are called "pragmas" and make your program less tolerant of sloppy code. You should start every Perl program with these two lines.

use FileHandle;

Use the built-in FileHandle module, which allows you to treat file handles (variables in the program that represent files) as objects (a programming construct that allows you to treat a variable as a self-contained entity with properties and "things it can do", also called methods).

for (my $i = 0; $i < @myArr; $i++) {

Create a new variable called $i, make it equal to 0. Repeat the following section (the section down to the matching '}') as long as the value of $i is less than the number of elements in the @myArr array. After finishing each loop, increment $i and do the test again.

# set $value to the value held in the array position we're on my $value = $myArr[$i]; # set $index to one more than our current array position my $index = $i + 1; #create our filename - when i = 0, it will be "file1" my $file = "file${index}"; write_value_to_file($value, $file); # call our function below with our current value and filename } # end the for block

Now we'll look at the function (or subroutine) write_value_to_file:

#we're starting a new subroutine sub write_value_to_file { # set two variables from the values given to this function my ($value, $fname) = @_; #create a new FileHandle object my $fh = new FileHandle; # open the file name in $fname for writing, and refer to it by $fh open ($fh, ">", $fname) # if opening the file failed, tell the user why and exit or die "unabel to write $fname($!)\N" #write the value, followed by a newline character, to the file print $fh "$val\n"l # tell the program we're done with this file. close $fh; #close the function }

Hopefully this was at least a little helpful.

UPDATED: mention $i++. Thanks johngg!

Replies are listed 'Best First'.
Re^3: writing each array element to a unique file
by johngg (Canon) on Dec 15, 2006 at 10:35 UTC
    <nit>

    When you explained the for loop you omitted to mention that $i is incremented at the end of the code section before the completion test is done and the section is repeated.

    </nit>

    If tutorials are intended for complete beginners, it probably pays to explain every last detail.

    Cheers,

    JohnGG

Re^3: writing each array element to a unique file
by garbage777 (Acolyte) on Dec 18, 2006 at 03:49 UTC
    Hi, Thank you very much for a detailed explanation. Best, garbage777