간단한 질문 : 스크립트의 사용자에게 임의의 배열을 입력 할 수있는 가능성을 제공하고자합니다. "[1 .. 5]"
또는 "[1, 2, 6, 9 .. 20]"
입니다. 현재, 나는 단지 eval
주어진 문자열 (분명히 매우 안전하지 않다!)과 perlcritic
은 나에게 레벨 5 경고를 준다.userinput에서 배열 가져 오기
내 현재 코드 :
my $arr = eval $patternData{"arr"};
unless ($arr) {
# fixes <arr> values like "(1 .. 5)"
$arr = undef;
@$arr = eval $patternData{"arr"};
}
편집 : 많은 사람들이 물어 :이 "더 - 더 - 더 - 더 나은"꼬입니다. 나는 강력 함 (표현의 측면에서)과 간단한 (디버깅, 파싱 및 입력 작성의 관점에서) 모두 해결책을 찾는다. 또한 : 그것은 절대적으로 범위를 지원해야합니다 (100 개가 넘는 배열은 쉽게 입력되어야합니다)
- 항상 - 내 버전을 포함하는 것을 잊었습니다. 5.8 내가 5.8이 필요의 vSphere API, 함께 일하고 있어요, 필수입니다 (I 너무 ~~
를 그리워!)
This is perl, v5.8.8 built for MSWin32-x86-multi-thread
(with 50 registered patches, see perl -V for more detail)
Copyright 1987-2006, Larry Wall
Binary build 820 [274739] provided by ActiveState http://www.ActiveState.com
Built Jan 23 2007 15:57:46
임의의 배열에는'[map {($ _, $ _ + 7)} split //, q (123)]'또는 실제로 얼마나 표현력이 필요한가요? – pmakholm
[이 도움이되는지 확인하십시오.] (http://search.cpan.org/~tlinden/Data-Validate-Struct-0.06/Struct.pm) – tuxuday