Я смотрю на чей-то другой код, и они открывают файл следующим образом:
(open (FILEHANDLE,'/homedirectory/textfile.txt'))
затем они помещают содержимое каждой строки в переменную для обработки (каждая строка файла состоит из данных, разделенных табуляцией):
while(<FILEHANDLE>) {
($var1, $var2, $var3, $var4) = split (/\t+/, $_);
тогда он делает что-то вроде:
$index = join('_', $var1, $var2, $var3);
и затем делает ЭТО (часть, где я чешу голову)
$contents = $filehandle{"$index"};
Я попытался распечатать $contents
, и выглядело, как будто это были значения $var1
, $var2
и $var3
, разделенные точкой с запятой (например, "value1;value2;value3
"). Кроме того, я изменил имя FILEHANDLE
на FILEHANDLE2
и сделал то же самое для $filehandle
, и я получил точно такой же результат, так что это наводит меня на мысль, что они связаны. Кроме того, если оставить FILEHANDLE
в покое и изменить $filehandle
на $filehandle2
, ничего не появится. Любая помощь будет принята с благодарностью, так как я застрял на этом довольно долгое время. Кроме того, я Perl N00B ... (я в основном программирую на Python).
По запросу, вот более полная версия кода:
sub myfn{
$filename = "home/textfile.txt";
open(FILEHANDLE, $filename) || die "Can't find filename\n";
while (<FILEHANDLE>) {
($var1, $var2, $var3) = split (/\t+/, $_);
$used_index = join ('_', $var1, $var2, $var3);
$tmp_index = uc ($used_index)
$contents = $filehandle{"$tmp_index"};
, чтобы быть ясным, $filehandle
появляется впервые на этом этапе ... также следует отметить, что что-то с похожим именем задано ранее, но это так:
abcd_filehandle{"$randomvar} = "VALUEX;VALUEY;VALUEZ";