나는 Data::Alias
을 좋아한다. 그것은 5.12에서 깨진 것 같습니다. 그것을 고칠 수 있습니까? 곧 수정 될 예정입니까? 좋은 대안이 있습니까?Perl 5.12에서 작동하는 Data :: Alias를 얻으려면 어떻게해야합니까?
답변
버전 1.08 (2010 년 10 월 22 일 BST로 출시) 이전에 빌드 된 모든 버전은 Perl 5.12에서 1.08이 깨기 전에 Data::Alias
으로 Perl 5.12에서 작동하지 않습니다. 최신 버전 (1.08 이상)으로 업그레이드하면 제대로 작동합니다!
재미있는 부가 설명을 드리 자면, 별명이 :=
no longer meaning an empty attribute list의 정리로 향후에 언어 기능으로 Perl에 제공 될 수있는 것처럼 보입니다. 그것을 기대하다! :)
CPAN의 모든 내용이 5.12 릴리스 후보에 대해 자동으로 테스트되었다고 생각합니까? 아마도 배포판에이 사건을 다루는 단위 테스트가 없었을 것입니다.이 경우 버그를보고하면 결코 다시 깨지지 않을 것입니다. :) – Ether
@Ether : rt의 스레드에 의한 판단은 버그가 아닙니다. 내부의 변경으로 인해 모듈의 XS 코드가 손상되었습니다. CPAN에 대한 릴리스 후보를 테스트 할 때 필자는 모르겠지만 동일한 플랫폼에서 이전 버전의 perl에 대한 결과와 행렬 비교를하지 않으면 유용하지 않은 것으로 보입니다. CPAN에있는 많은 모듈이 실패하여 5.12가 고장났다는 의미는 아닙니다. :) –
rafl은 몇 주 전에 나에게 그것을 보았고 너무 어렵지 않을 것이라고 말했다. (그것은 rafl에게는 너무 힘들다). 그는 이렇게하기로되어 있습니다. Method :: Signature는 5.12에서 작동 할 수 있습니다. – Schwern
모듈은 2007 년부터 업데이트되지 않았지만 저자 (Matthijs van Duin : [email protected])에게 언제든지 메시지를 보내거나 Robert가 답변에서 언급 한 버그 보고서를 제출할 수 있습니다. 여기
몇 가지 대안 :- 5.12+에서 작동 앨리어싱
지금까지와 같은 추가 CPAN 모듈 :
- Variable::Alias - 깨끗한 구문
- Tie::Alias - 순수한 펄 솔루션
- Lexical::Alias - 깨끗한 구문
- Devel::LexAlias - 약간 낮은 수준
그리고 CPAN에 '별칭'에 대한 검색은 몇 가지 더, 아무도하지만 데이터 :: 별칭의 기능 "이 문장의 별칭으로하는 모든 일의"를 제공하기 위해 보이지 않는다 변합니다 . 따라서
Data::Alias
이 수정 될 때까지 위의 또는 다음과 같은 순수한 Perl 메소드 중 하나를 사용할 수 있습니다. Perl은 심볼 테이블에있는 변수에 대한 변수의 별명 지정을 지원합니다. 이것은 다음과 같이 수행됩니다 :
항상 그렇듯이 동적 스코프/로컬이 실제로 사용하기 전에 무엇을하는지 알고 있어야합니다.
어휘 스칼라 for 루프의 범위 별칭으로 사용될 수있다
필요 어휘 별명이 유형에도 클로저 루프 밖으로 전달 될 수my $x = 1; for my $y ($x) { $y++; } print $x; # prints 2
my $x = 1;
my $alias = sub{\@_}->($x); # return a reference to its argument list,
# which maintains its aliases
$$alias[0]++;
print $x; # prints 2
을하지만 그건 정말 당신에게 m를 제공하지 않습니다
당신은 서브 루틴 인수 목록에 대한 펄의 앨리어싱 마법을 사용하여 배열을 별칭을 만들 수 있습니다 다른 구문을 사용하여 참조보다는 광석 기능을 사용할 수 있습니다.
그리고 펄의 참조를 사용하는 예 :
my $x = 1;
my $y = \$x; # take a reference to $x
$$y++; # dereference $y
print $x; # prints 2
참조가 별칭과 다른 것은 아닙니다. 표시하는 예제는 Data :: Alias의 제한된 하위 집합입니다. –
@brian d foy => 참고 예제는 대안을 보여주기위한 것이며 다른 두 예제는 내가 아는 순수한 Perl 앨리어싱 기술의 나머지 부분입니다. 이들은 물론 제한된 하위 집합입니다. 그렇지 않으면 Data :: Alias가 작성되지 않았을 것입니다. OP는 대안을 요청했다 –
, 참고 문헌은 별명과 정확히 똑같은 것으로, 다른 옷에있다. 별칭을 지정하려면 변수 유형 glob의 해당 슬롯에 참조를 지정합니다. typeglob 레이블에 사용하는 sigil이 무엇이든간에 Perl에 역 참조를 지시하므로 '$ y'는 "y라고 표시된 유형 글로브의 스칼라 역 참조"로 읽습니다. '$ {* y {SCALAR}} ++;' –
나는 또 다른 잠재적 인 옵션을 발견 Scalar::Alias
를, 펄 5.12에서 작동하도록 보인다. 분명히 스칼라의 앨리어스 만 있지만 등호 대신 뚱뚱한 쉼표는 필요하지 않습니다.
- 1. Python 스크립트로 Perl 스크립트의 결과를 얻으려면 어떻게해야합니까?
- 2. Blogger 용 Google Data API에서 팔로어 목록을 얻으려면 어떻게해야합니까?
- 3. 상징적 인 방법으로 작동하는 scalaz IDEA 라이브 템플릿을 얻으려면 어떻게해야합니까?
- 4. 두 개의 if (isset 문이 작동하는 삽입 쿼리를 얻으려면 어떻게해야합니까?
- 5. Perl GTK 프로그램에서 크로스 스레드 통신을 얻으려면 어떻게해야합니까?
- 6. Perl 영구 데이터 저장 :: Data :: Dumper
- 7. DBI를 사용하는 Perl 모듈에서 100 % 테스트 커버리지를 얻으려면 어떻게해야합니까?
- 8. Perl 파이프에서 인코딩을 설정하려면 어떻게해야합니까?
- 9. Perl MySQL DBI 핸들에서 데이터베이스 이름을 얻으려면 어떻게해야합니까?
- 10. JIRA에서 Perl SOAP로 사용자 정의 필드 목록을 얻으려면 어떻게해야합니까?
- 11. Perl 시스템()으로 시작하는 프로세스의 PID를 얻으려면 어떻게해야합니까?
- 12. Perl 정규 표현식에서 단 하나의 캡처 만 얻으려면 어떻게해야합니까?
- 13. Perl 정규 표현식에서 여러 개의 메모리를 얻으려면 어떻게해야합니까?
- 14. E.P.I.C 및 eclipse와 함께 작동시키기 위해 Perl :: Critic을 얻으려면 어떻게해야합니까?
- 15. Perl Date :: Manip으로 한 달의 배열을 얻으려면 어떻게해야합니까?
- 16. 파일을 Perl 해시에로드하려면 어떻게해야합니까?
- 17. Perl Data :: UUID는 강력한 대칭 키 소스입니까?
- 18. apache mod-vhost-alias를 설정하십시오.
- 19. DynamicControl의 가치를 얻으려면 어떻게해야합니까?
- 20. Perl 6에서 작동하는 CPAN/CPAN6 프로젝트가 있습니까?
- 21. Windows XP에서 작동하는 Perl memcached 클라이언트가 있습니까?
- 22. Where 절에서 OR을 얻으려면 어떻게해야합니까?
- 23. Perl에서 호출 스택 목록을 얻으려면 어떻게해야합니까?
- 24. Perl에서 파일 메타 정보를 얻으려면 어떻게해야합니까?
- 25. 함수 내에서 함수에 대한 참조를 얻으려면 어떻게해야합니까?
- 26. haml에서 배열 배열을 얻으려면 어떻게해야합니까?
- 27. TrackPopupMenu에서 니모닉을 얻으려면 어떻게해야합니까?
- 28. CPU 사용법을 얻으려면 어떻게해야합니까?
- 29. ActionExecutingContext에서 MethodInfo를 얻으려면 어떻게해야합니까?
- 30. 파일에서 CGImageRef를 얻으려면 어떻게해야합니까?
이 문제는 XSub 모듈에서 자주 발생합니다. –
이에 따르면 Perl 5.12에는 Data :: Alias가 없습니다. https://bugzilla.redhat.com/show_bug.cgi?id=611014 –
예! 마지막으로 업데이트 : http://cpansearch.perl.org/src/ZEFRAM/Data-Alias-1.08/Changes –