2014-05-15 2 views
1

파일 핸들을 값으로 저장하는 해시 (% filehandle)가 있습니다. 그러나 나는 그들을 인쇄 할 수 없다.내용 인쇄 파일 핸들 해시

내 해시는 다음과 같습니다

my %filehandle; 
foreach my $output (@outputs){ 
    foreach my $fp (@fp_values_array){ 
    $filehandle{$output}{$fp}=undef; 
    } 
} 
print Dumper \%filehandle; 

$VAR1 = { 

      'GMAF' => { 
         '0.05' => \*{'::$__ANONIO__'}, 
         '1' => \*{'::$__ANONIO__'}, 
         '0.001' => \*{'::$__ANONIO__'} 
        } 
     }; 

내가 문제가 값이 참조 있다는 것을 알고 있지만 나는 펄로 시작 그리고 난 액세서하는 방법을 모르는 그들에게 ...

print "$_\n" for (keys ${$filehandle{GMAF}{$fp_value_array}}); 

을하지만 그것은 작동하지 않습니다

나는 이런 식으로 뭔가를 시도했다.

Type of argument to keys on reference must be unblessed hashref or arrayref at report.pl line 369, <INPUT> line 5000. 

누군가가 나를 도울 수 있다면 매우 감사 할 것입니다.

고맙습니다.

+0

'인쇄 할 수 없습니까?'란 무엇을 의미합니까? 파일 핸들은 외부 파일, 소켓, 파이프 등에 대한 참조로 액세스 할 수 있습니다. 인쇄 할 수는 없지만 인쇄 할 수는 있습니다. 네가 묻고있는거야? – Oesor

+0

하지만이 파일 핸들은 여러분이 말했듯이 파일 이름 출력에 대한 참조입니다. 내 목표는 이러한 출력 파일 이름을 인쇄하는 것입니다. – userbio

+1

파일 핸들을 생성하는 한 가지 방법으로 이름을 사용합니다. 파일 핸들은 이름을 포함하지 않습니다. 소켓, 파이프 또는 파일 시스템 이름이없는 것에 대한 참조 일 수 있습니다. http://stackoverflow.com/questions/2813092/can-i-find-a-filename-from-a-filehandle-in-perl을 읽어보십시오. 일부 경우에는 수행 할 수 있지만 항상 그런 것은 아닙니다. – Oesor

답변

1

print "$_\n" for (keys ${$filehandle{GMAF}{$fp_value_array}});

은 다음과 같아야합니다 $filehandle{GMAF}에 저장된 hashref를 역 참조

for my $fp_value_array (keys %{$filehandle{GMAF}}) { 
    print $filehandle{GMAF}{$fp_value_array}; 
} 

, 그것의 열쇠를 얻기 위해 키를 사용하고 키을 반복은 캐릭터 라인 화와 핸들에 대한 참조를 인쇄 각 키에 저장된 값.

+0

답장을 보내 주셔서 감사합니다! 나는 당신의 요지를 이해하지만 그것은 저에게 glob reference를 인쇄하고 있습니다 : GLOB (0xa45ef0) GLOB (0xa45e30) GLOB (0xa45fb0) – userbio

+0

그게 filehandles입니다. – Oesor

+0

내 질문이 잘못 잘못 공식화되었습니다. 나는 mylsef에 의해 그것을 시도 할 것이다. 고마워 .Oesor. – userbio

0

파일 핸들에는 파일 이름이 연관되어 있지 않습니다. 파일 설명자를 래핑합니다. 파일 기술자 (있는 경우)로부터 이름을 얻는 방법은 OS에 따라 다르지만 가장 좋은 방법은 핸들과 함께 이름을 해시에 배치하는 것입니다.

{ 
    GMAF => { 
     '0.05' => { 
     fn => ..., 
     fh => ..., 
     }, 
     '1' => { 
     fn => ..., 
     fh => ..., 
     }, 
     '0.001' => { 
     fn => ..., 
     fh => ..., 
     }, 
    }, 
}