Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Re: Populating an array

by sierrathedog04 (Hermit)
on Mar 28, 2001 at 04:13 UTC ( [id://67690]=note: print w/replies, xml ) Need Help??


in reply to Re: Populating an array
in thread Populating an array

When our student friend turns in his assignment he should be sure to add single quotes around filename on line number 4.

He should also add comments explaining what is going on and add some code to print out the array values. A final result (containing the obfuscatory dereferenced reference) is thus:

#!/usr/bin/perl -w use strict; use IO::File; use constant FILENAME => 'filename'; #Replace filename with name of in +put file. my $file = IO::File->new( "< ". FILENAME ) or die "Failed to open '@{[FILENAME ]}', $!"; # Dereferenced array + ref and OS error my @elements; { local $/ = $/.$/; #Replace default input delimeter (\n) with (\n\n +) @elements = <$file>; } $file->close(); #Now test to see that everything reads out okay print "Here are the elements of the array:\n"; for (my $i = 0; $i < @elements; $i++) { print "Element number $i of the array is:\n$elements[$i]\n"; }
If our friend makes some effort to understand what he has submitted then he will have learned his lesson well. Maybe we will see him here with Tye and Merlyn someday.

Replies are listed 'Best First'.
Re: Re: Re: Populating an array
by Adam (Vicar) on Mar 28, 2001 at 04:27 UTC
    Good catch on the quotes around the filename. I intentionally left it all uncommented. But lets have some more fun with it:
    #!/usr/bin/perl -w use strict; use IO::File; use constant FILENAME => 'filename'; { package cntr; sub TIESCALAR{bless[pop],__PACKAGE__} sub FETCH{ $_[0][0]++ } } my $file = IO::File->new( "< ". FILENAME ) or die "Failed to open '@{[FILENAME]}', $!"; my @elements; { local ( $a, $/ ) = $/.$/; @elements = split $a => <$file>; } $file->close(); print "Here are the elements of the array:\n"; tie my $i, 'cntr', 1; print map {$i.': {'."$_}$/"} @elements;
    Yeah, that would go over well with a teacher or professor.

    Update: So I changed the code a little from the original post. I actually tested it, and didn't like the way the newlines hung around. This fixes that. View source for the old code.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (3)
As of 2024-04-18 23:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found