Weiss immer noch nicht so genau, was du damit eigentlich machen willst, aber dreimal cat ausführen, um eine Zeile zu zerlegen sieht nicht gar so effizient aus.
Probier doch mal das open Kommando und lies alle Daten, die du brauchst erstmal ein und bereite sie dann auf. So zum Beispiel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/perl
use strict;
use warnings;
use Tk;
my $mw = tkinit();
my @radiobuttons;
my $var;
my $filename='text.cfg';
my $filehandle;
my $meinedaten;
open ($filehandle,'<',$filename) or die "Kann $filename nicht öffnen!\nFehler: $!";
while (<$filehandle>) {
chomp;
next if (/^\s*$|^#/);
my ($name,$pfad1,$pfad2)=split(/\s+/,$_,3);
$meinedaten->{$name}->{'pfad1'}=$pfad1;
$meinedaten->{$name}->{'pfad2'}=$pfad2;
my $rb = $mw->Radiobutton( -variable => \$var, -text => $name, -value => $name, -command=>sub{getPfad($name)})->pack;
push @radiobuttons, $rb;
}
close ($filehandle);
$radiobuttons[0]->select;
my $ausspuckfeld = $mw->Label(-textvariable =>\$var, -borderwidth => 2,-relief =>'sunken')->pack(-fill => 'x');
MainLoop;
sub getPfad {
my $diesername=shift;
my $pfad_lokal=$meinedaten->{$diesername}->{'pfad1'};
my $pfad2_lokal=$meinedaten->{$diesername}->{'pfad2'};
print "Name: $diesername\n";
print "Pfad1: $pfad_lokal\n";
print "Pfad2: $pfad2_lokal\n\n";
}
Das benutzte Splitkommando funktioniert aber nur, wenn deine Pfade keine Leerzeichen enthalten.