Xetius
그는 물었다 12년 전
5

왜 내 doesn& # 39 펄 (perl), t 맵 반품하십시오 있던가요?

제가 운영하는 때 다음 설명:

@filtered = map {s/ //g} @outdata;

그것은 빈 나열하십시오 반환하는 대신 제가 걱정했던것 필터링됨 목록입니다. 내가 할 일은 없을 것이다. ',' 에서 사용할 수 있을 만큼, 모든 발생을 제거하시겠습니까 &amp 배열입니다 문자열 (원하는거요 xml 파일).

I am not 이해하는 것은 아니다. 올바른 방법으로 말해보게나 아무나 될 수 있습니다, 왜 날 위해 일하는 t # 39 이 isn& 그대로?

답변 7 개

참고로 소스 어레이입니다 수정하십시오 매핑해야 진행 과정은 잘 알려져 있다. 그래서 인컨텍스트 할 수 있습니다.

map {s/ //g} @outdata;

오리지널스 보존해야 하는 것으로서, 또는 @filtered 가변으로 및 건너뛰십시오 경우,

@filtered = @outdata;
map {s/ //g} @filtered;

포리치 사용할 수 있지만, 이 경우, 보다 쉽게 읽을 수 있습니다.

s/ //g foreach @filtered;

brian d foy
그는 5년 전 댓글을 달았습니다
0

39 는 void 컨텍스트로 매핑해야 '에서' t say anything 케이블링의 양식 및 doesn& 효시로 여겨지고 있다. '를 통해 @filtered {. } '.

이거 드세요.

@filtered = map {s/ //g; $_} @outdata;

문제는 펄 (perl) 의 사업자 수를 되돌려줍니다 수정되므로 $ 예상했지만 실제 변경되는지 가능하도록 했다. 따라서 추가 $ 끝에 perl 반품하십시오 구체화하십시오 수정되었음 인해 각 요소에 대한 @outdata.

Kevin Panko
그는 11년 전 댓글을 달았습니다
5

이 코드는 삭제 한 사용자 의 값을 @outdata.

Rob Van Dam
그는 11년 전 댓글을 달았습니다
6

39 m not feeling 짓궂군요 i& 다운보테 터무니없군 충분히 있지만, # 21792 http://stackoverflow.com/questions/12103/why-doesnt-my-perl-map-return-anything/21792 훨씬 더 나은 답이 있다.

brian d foy
그는 5년 전 댓글을 달았습니다
0

와 [펄 5.14& # 39 의 비파괴적인 대체] (http://www.effectiveperlprogramming.com/2010/09/use-the-r-substitution-flag-to-work-on-a-copy/), 이렇게 할 수 있습니다 / / gr}, {s/&amp @filtered = 매핑해야 @outdata 'like', '@outdata 영향을 주지 않고 사용할 수 있을 만큼'.

39 에 문제가 있는 것으로, 원래 배열을 수정하십시오 오토메이티드 greg& s $ _ 로 가칭된 전달됩니다. 합니다.

@filtered = map { (my $new = $_) =~ s/ //g; $new} @outdata;

39 의 후속 조치를 할 수 있는 점, 또한 Tithonium& 의심하게 된다.

@filtered = map {local $_=$_; s/ //g; $_} @outdata;

이 &quot local"; # 39 는 you&, re working on a copy) 가 아닌 원본.

펄 (perl) 에서 5.14 수정자의 /r regex 를 사용할 수 있습니다 ([제조업체 비파괴적인 대체] http://perldoc.perl.org/perl5140delta.html # 정규 표현식).

@filtered = map {s/ //gr} @outdata;

use Algorithm::Loops "Filter";
@filtered = Filter { s/ //g } @outdata;

39 를 Greg& 비호환성의 대위법, s 오토메이티드 그렙 오용 수 있습니다.

@filtered = grep {s/ //g; 1} @outdata;

  • Don& 못하며창조된 this.* t # 39.