2017-11-13 2 views
0

Iam versuchen, die Absicht Perl-Code unten zu entziffern:

sub get_input_params($) { 
    my ($file) = @_; 
    my $params = {}; 
    open(IN, $file) or die "Input file not found"; 
    while(<IN>) 
    { 
    if(/^\s*JOINT (\d{4}) (.{7})(.{7})(.{7})(.{7})(.{7})(.{7}) ELASTIC?\s*$/i) 
    { 
     $params->{$1}{'Kx'} = $2; 
     $params->{$1}{'Ky'} = $3; 
     $params->{$1}{'Kz'} = $4; 
     $params->{$1}{'Txx'} = $5; 
     $params->{$1}{'Tyy'} = $6; 
     $params->{$1}{'Tzz'} = $7; 
    } 
    } 
    close(IN); 

    $params; 
}; 

Insbesondere Iam an diesem fest:

$params->{$1}{'Kx'} = $2; 

Kann jemand eine Quelle geben für immer dies geklärt

Antwort

0

die aktuelle Zeile der Datei Angenommen ist

JOIN 1234 uuuuuuuvvvvvvvwwwwwwwxxxxxxxyyyyyyyzzzzzzz ELASTIC ... 
     $1  $2  $3  $4 $5 $6  $7 

der Inhalt nach ELASTIC ist irrelevant.

Die Erfassungsgruppen werden wie oben gezeigt nummerisch bezeichnet.

$params ist eine Hash-Referenz, mit $1 als Kx, Ky zu einem anderen Hash mit Schlüsseln zugeordnet Schlüssel verwendet wird, etc., um die Beispielzeile oben Verwenden würden die folgenden Zuordnungen

$params->{1234}{Kx} = "uuuuuuu" 
$params->{1234}{Ky} = "vvvvvvv" 
$params->{1234}{Kz} = "wwwwwww" 
$params->{1234}{Txx} = "xxxxxxx" 
$params->{1234}{Tyy} = "yyyyyyy" 
$params->{1234}{Tzz} = "zzzzzzz" 
gemacht werden