Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: Ranking files, largest to smallest

by ewexperts (Initiate)
on May 27, 2008 at 06:05 UTC ( [id://688601]=note: print w/replies, xml ) Need Help??


in reply to Ranking files, largest to smallest

Okay, I got it to stop giving me errors at least, using the following code:
#!/usr/local/bin/perl use strict; use warnings; use CGI qw/:standard/; use CGI::Carp qw/fatalsToBrowser/; my $wrestlerdir = '/home/ewexpert/public_html/rosterrank'; open(FILE, "$wrestlerdir/wrestlerlist.txt"); my @lines = <FILE>; chomp (@lines = <FILE>); close(FILE); foreach my $test (@lines) { open my $fh, "<", "$wrestlerdir/$test.total" or die "Can't open @lines +.total $!"; my @total = <$fh>; } print header, start_html('Rankings: '), (@lines), end_html;
However, from what I can tell I don't think it's working. It's just outputting a blank page. Even more troublesome is that I know that 1 or 2 of the .total files aren't actually there, because I wanted to see what it would do if the files weren't present. It should print "Can't open @lines.total" but it's just entirely blank.

Replies are listed 'Best First'.
Re^2: Ranking files, largest to smallest
by prasadbabu (Prior) on May 27, 2008 at 06:24 UTC

    example: blackdeath.total and dandelion.total

    The Text File: Black Death #check the space Jesse Gunn The Crimson Shadow Ariana London Legion Scorpio Greg Manix

    I doubt that in the file where you are reading the file names is having space and in the file names which you have given in example doesn't have space. So you check that.

    Also In the below code, first line is not necessary.
    change

    my @lines = <FILE>; chomp (@lines = <FILE>);
    into

    chomp (@lines = <FILE>);

    Prasad

Re^2: Ranking files, largest to smallest
by MidLifeXis (Monsignor) on May 27, 2008 at 11:26 UTC

    Given the assumption of homework...

    #!/usr/local/bin/perl use strict; use warnings; use CGI qw/:standard/; use CGI::Carp qw/fatalsToBrowser/;

    Strict/warnings: good habit to start with. Also, good to use "standard", tested modules (CGI, CGI::Carp) rather than re-inventing wheel.

    my $wrestlerdir = '/home/ewexpert/public_html/rosterrank'; open(FILE, "$wrestlerdir/wrestlerlist.txt"); my @lines = <FILE>; chomp (@lines = <FILE>); close(FILE);

    As mentioned by the previous poster, the first @lines=<FILE> line is slurping all of your data, and then being overwritten. Use the second line. Additionally, the indenting between the open and close is a little misleading. I understand why you did it, but the structure implies that @lines may not be in scope after the close(), especially since it is being declared with my.

    foreach my $test (@lines) { open my $fh, "<", "$wrestlerdir/$test.total" or die "Can't open @lines +.total $!"; my @total = <$fh>; }
    • The variable @total will be re-initialized for each file, and will go out of scope at the end of the loop
    • Good use of the "3 argument version" of open. Safer than the form open my $fh, "<$data.txt"
    • @total is slurping in the entire contents of the file. From your description, it sounds as if you only need to read the first line. Search this site for the difference between scalar and list context while doing a read.
    • @total is not used anywhere other than to read the data from the file. See the first comment in this section. I am guessing it may help in this area :)
    print header, start_html('Rankings: '), (@lines), end_html;

    This is using "Rankings: " as the page title, and nothing more. You are then printing all of the contents of the list of files, without any HTML formatting (at least in this version of your program), and then the HTML terminator. See the previous set of comments, and the last respondent. I think they may go straight to the heart of the issues in your solution.

    Good luck, and ask if you have any more questions on this.

    --MidLifeXis

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (4)
As of 2024-04-24 19:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found