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

learner@perl has asked for the wisdom of the Perl Monks concerning the following question:

Hi Masters,

Good Morning, i am creating some records by adding some variables to it as mentioned below

$report{}[0]="DOB,Name,Empid,salary,Gross_salary,Department,Company"; $report{}[1]="Month,NET_Salary,";

I need to print these records to text file and also to a table

subroutine{ my @data; my $table; open( F, "$File" ) || die("Could not open $File"); while ( my $line = <F> ) { chomp($line); push( @data,( split /[,\n]/, $line));} close(F); $table .= "<table border=1>"; for my $i ( 0 .. $#data ) { $table .= "<tr>"; for ( @data[ $i * $#data .. ( $i * $#data ) ] ) { $table .= "<td>$_</td>\r\n"; } $table .= "</tr>"; } $table .= "</table>"; }

When i execute this code, i am getting output as:

MessageFile MessageFile MessageFile MessageFile MessageFile

How can i read those records and print them into to text file and also to a table, any help on this, thanks in advance

Replies are listed 'Best First'.
Re: Reading and writing data to text file and to table
by moritz (Cardinal) on Jul 03, 2013 at 05:35 UTC
Re: Reading and writing data to text file and to table
by NetWallah (Canon) on Jul 03, 2013 at 05:46 UTC
    The code posted seems to be an incorrect adaptation from this response to Perlseeker_1, and there seems to be some similarity in the question pattern.

    The output shown does not correspond to the input that you claim to have used.

    If you would like assistance, please post code and data we can use to reproduce your issue.

    What are you expecting the following line of code to do ?:

    for ( @data[ $i * $#data .. ( $i * $#data ) ] ) {
    and why would you want to code it that way ?

                 My goal ... to kill off the slow brain cells that are holding me back from synergizing my knowledge of vertically integrated mobile platforms in local cloud-based content management system datafication.

Re: Reading and writing data to text file and to table
by Utilitarian (Vicar) on Jul 03, 2013 at 05:48 UTC
    Why not represent your data in the way you wish to present it? create a 2-dimensional array using the line number of the file as your index when reading in the data.
    subroutine{ my @data; my $table; open( F, "$File" ) || die("Could not open $File"); while (<F>) { chomp(); push( @{@data[$.]},( split /,/, $line)); } close(F); $table .= "<table border=1>"; for my $i ( 0 .. $#data ) { $table .= "<tr>"; for ( @{@data[$i]}){ $table .= "<td>$_</td>\r\n"; } $table .= "</tr>"; } $table .= "</table>"; }
    print "Good ",qw(night morning afternoon evening)[(localtime)[2]/6]," fellow monks."
      Hi Masters,

      Please find the records which i formed below

      $input{$EMPNO}[0]="DOB,Name,Empid,salary,Gross_salary,Department,Compa +ny"; $input{$EMPNO}[1]="Month,NET_Salary,";

      The code which is used to put the records in table

      { my @data; my $table; foreach my $k (keys %input) { foreach (@{$input{$k}}) { chomp(); push( @{@data[$.]},( split /[,\n]/, $_)); } } $table .= "<table border=1>"; for my $i ( 0 .. $#data ) { $table .= "<tr>"; for ( @{@data[$i]}){ $table .= "<td>$_</td>\r\n"; } $table .= "</tr>"; } $table .= "</table>"; }

      The output i want in a tabular format, when i run the above code i have error,Can't use an undefined value as an ARRAY reference

        Hi Masters,

        Good Morning, i am creating some records by adding some variables to it as mentioned below

        $report{}[0]="DOB,Name,Empid,salary,Gross_salary,Department,Company"; $report{}[1]="Month,NET_Salary,";

        I need to print these records to text file and also to a table

        subroutine{ my @data; my $table; open( F, "$File" ) || die("Could not open $File"); while ( my $line = <F> ) { chomp($line); push( @data,( split /[,\n]/, $line));} close(F); $table .= "<table border=1>"; for my $i ( 0 .. $#data ) { $table .= "<tr>"; for ( @data[$i]){ $table .= "<td>$_</td>\r\n"; } $table .= "</tr>"; } $table .= "</table>"; }

        When i execute this code, i am getting output as:

        MessageFile MessageFile MessageFile MessageFile MessageFile

        How can i read those records and print them into to text file and also to a table, any help on this, thanks in advance

        I have changed the code from for ( @data$i){ for column, i am getting output in single coulmn

        DOB Name Empid salary Gross_salary Department Company Month NET_Salary

        Its not displaying the data in row and column