Stefan Welscher: Lesenden FH in Unterfunktion verarbeiten?

Beitrag lesen

Hallo zur spaeten Stunde,
ich hab gerade wieder ein kleines PERL-Problem.

Ich oeffne im Hauptskript eine Datei (lesend) und arbeite diese bis zu einer bestimmten Stelle ab. Ab dieser Stelle soll der Filehandle an eine Unterfunktion übergeben werden und von dieser weiter gelesen werden.

Vorgestellt hab ich mir das ganze so (vereinfacht):

  
#script.pl:  
open (INPUT, "<", $input_file) or die "\n\nDatei konnte nicht geoeffnet werden!\n\n";  
while (my $line=<INPUT>)  
{  
   my %I=&read_input($line, $output_dir, $date);  
  
   #...Pruefzeugs...  
  
   if ($main::multiline)  
   { $main::line_input=&read_input_ml(\%I,*INPUT); }  
}  
  
  
#submodule.pm:  
package Projects::submodule;  
  
use Exporter;  
use Convert;  
@ISA = ('Exporter');  
@EXPORT = qw( &read_input  
              &read_input_ml );  
sub read_input  
{  
   #...  
}  
  
sub read_input_ml  
{  
   my ($HI, $INPUT)=@_;  
   my %I=%{$HI};  
  
   while (my $line=<$INPUT>)  
   {  
      ($variable1,  
       $variable2,  
       $variable3  
      ) = split (/\t/,$line);  
      print "\nSublineID = ".$variable1."\n";  
      if ($variable1 ne $I{'variable1'})  
      { return $line; last; }  
   }  
   return 0;  
}  
  

Funktioniert aber in der Praxis nicht:

Can't modify constant item in list assignment at ../lib/Projects/submodule.pm line 525, near ");

Line 525 entspricht der split-Anweisung.

Was läuft da schief und wie mache ich es richtig?

Danke und Gruß,
Stefan