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


in reply to Last two rows or a csv file.

Getting the last couple of rows is easy enough. Here's an example fragment that just reads the file in from STDIN:

$my( $curr_time, $prev_time ); while( <> ) { $prev_time = $curr_time; $curr_time = ( split /,/ )[1]; }

You can modify that to be a bit more robust or to open a file properly or what have you.

I'm not sure how you're calculating the percentage. Are you just dividing one number by the other?

You can print the percentage in whatever format you need using sprintf, for example:

$percentage = "%" . sprintf( "%.3f", $prev_time / $curr_time * 100 );

Or whatever your calculation is.

I'm sorry I can't be of much more help than this. If your code isn't working properly, post the fragment where the problem lies (or a test program that duplicates the problem) here and we'll try and sort through it.

If you don't have any code yet, then try your hand at the problem yourself. Worst case scenario is you're no worse off than before. :)

Good luck!

elbieelbieelbie

Replies are listed 'Best First'.
Re: (elbie): Last two rows or a csv file.
by qball (Beadle) on Aug 18, 2001 at 01:48 UTC
    This is what I've got:
    #!/usr/bin/perl open (FILE, "edidocs.csv") or die "Can't open file $!\n"; @lines = <FILE>; while ($line = pop @lines) { print $line "\n"; }
    It prints the rows from last to first. Now I need to get the first two rows timestamp and do the calulations. Then we'll be good to go!

    qball~"I have node idea?!"
      If you don't need to store the contents of the file, try this:

      open (FILE, "edidocs.csv") or die "Can't open file $!\n"; my( $curr_time, $prev_time ); # Sorry about the $ in the original while( <FILE> ) { $prev_time = $curr_time; $curr_time = ( split /,/ )[1]; }

      If you do need to store the whole file, then the last two lines are stored in $lines( $#lines - 1 ) and $lines( $#lines ) of your example before you popped them off the stack.

      elbieelbieelbie

        Great! This works beautifully. Now I'm onto another stumbling block. How would I get the same percentage calculation for the entire month using the epoch timestamp in the csv file?

        qball~"I have node idea?!"