2013-08-23 2 views
0

해시와 "remove_tree"서로 다른 결과를 얻을 수 : 불행하게도펄의 "make_path"와 빈 옵션 나는이 똑같이 보이는 내 모듈의 코드 라인이

make_path($root_dir); 

를,이 원하는을 만들지 않습니다 디렉토리 (내가 확인하고 거기에 권한이있다). 나는 다음에 그것을 변경하는 경우

그러나 :

make_path($root_dir, {}); 

그것은 잘 작동합니다. 한 줄 더 일찍, make_path($root_dir);make_path($root_dir, {});과 같은 이상한 행동을하고 있습니다. 왜 이것이 될 수있는 아이디어?

저는 Perl 5, 버전 16 및 파일 : 경로 버전 2.09를 사용하고 있습니다.

+0

가 이상한 것 같다 경로를 stringifying에 의해

make_path($path, {}) 

또는

해시. [재현 가능한 예] (http://sscce.org/)를 제공 할 수 있습니까? '$ root_dir'은 정확히 무엇입니까? 무엇이 stderr에 인쇄되고 있습니까? – rutter

+1

좋은 계획입니다. 나는 실제로 그것을 단지 해결했다. '$ root_dir'는'Path :: Class :: Dir'입니다. 그래서'make_path'는 config 해쉬 나 다른 것이있을 때 다른 시간에 그것을 스칼라로 변환해야합니다. ''$ root_dir ''이 전달됩니다. 나는 집에 도착했을 때 적절한 답을 게시 할 것입니다. –

답변

3

Path :: Class :: Dir 클래스는 해시 기반 개체를 만듭니다.

make_path의 용도는 make_path(PATHS, OPTIONS_HASH)입니다.

Path :: Class :: Dir 개체를 make_path의 마지막 인수로 전달하면 옵션 해시로 간주됩니다. 당신은 명시 적으로 옵션을 제공함으로써이 문제를 해결할 수

명시 적으로

make_path("$path")