Perl List::Util 모듈 사용 인스턴스
[예01] 조건에 맞는 목록을 스캔하고 첫 번째 조건에 맞는
일반적인 방법:
use 5.010;
my @names = qw(Wendy Jerry Betty Wendy Alice);
foreach (@names) {
if (/\bWendy\b/i) {
$match = $_;
last;
}
}
say $match;
List::Util 모듈에서 제공하는first 서브루틴을 사용하면 간단하게
use List::Util qw(first);
my $match = first {/\bWendy\b/i} @names; # Wendy
,
[예02] 1에서 1000 사이의 합을 구하다일반적인 방법:
use 5.010;
my $total = 0;
foreach (1..1000) {
$total += $_;
}
say $total; # 500500
List::Util 모듈에서 제공하는 sum 서브루틴을 사용하면 간단합니다.
use List::Util qw(sum);
my $total = sum(1..1000); # 500500
【예03】 한 조의 숫자의 최대치와 최소치를 구한다.일반적인 방법:
#! /usr/bin/perl;
use utf8;
sub max {
my($max_so_far) = shift @_; # , 。
foreach(@_){ # @_
if($_>$max_so_far){ # $max_so_far 。
$max_so_far = $_;} # ,
}
$max_so_far;
}
my $_MaxData = &max(2,3,8,5,10);
print $_MaxData; # 10
List::Util 모듈에서 제공하는 max 서브루틴을 사용하면 간단합니다.
use List::Util qw(max);
my $max = max(2, 3, 8, 5, 10);
print $max; # 10
마찬가지로 List::Util 모듈에서 제공하는 min 서브루틴을 사용하여 최소값을 구할 수 있습니다.
use List::Util qw(min);
my $min = min(2, 3, 8, 5, 10); # 2
[예04] 문자열 그룹 정렬일반적인 방법을 사용한다면 순서대로 하나씩 비교해야 합니다. List:::Util의 maxstr 하위 프로그램으로 쉽게 할 수 있습니다.
use List::Util qw(maxstr);
my $max_str = maxstr( qw/Jerry Betty Alice Fred Barney jerry/ );
print $max_str;
【예05】 목록의 요소에 대한 무작위 정렬일반적인 방법을 사용하면 실현하기 어려운데,List:::Util의 shuffle 서브루틴을 사용하면 매우 간단합니다. 명령 하나로 처리합니다!
use List::Util qw(shuffle);
my @shuffled_nums = shuffle(1..10); # 3 9 8 5 6 4 1 10 2 7
my @shuffled_name = shuffle('A'..'G');# F E G A B D
[예06] 목록에 어떤 원소가 없거나 어떤 원소가 있거나 모든 원소가 조건에 부합되는지 검사한다.유사grep 문법 지원일반적인 방법을 사용하면 실현하기 어렵고, List::MoreUtils 역시 실현하기 쉬우며, 코드는 다음과 같다.
use List::MoreUtils qw(none any all);
my @numbers = qw(7 4 1 3 78);
if (none {$_ > 100} @numbers) {print "No elements over 100
"; }
elsif (any {$_ > 50}@numbers) {print "Some elements over 50
";}
elsif (all {$_ <10} @numbers) {print "All elements < 10
";}
NOTE: List::MoreUtils , .
[예07] 여러 개의 이름 목록을 동시에 처리하고 매번 두 자리를 꺼냅니다.
use List::MoreUtils qw(natatime);
my @names_1 = qw(Alice Bob Carly);
my @names_2 = qw(David Edward Foo);
my $names = natatime(2, @names_1, @names_2); #natatim (N at a time: N )
while (my @name = $names->()) { # ,
print "Got @name
";
}
#
Got Alice Bob
Got Carly David
Got Edward Foo
[예08] 여러 개의 목록을 하나의 목록으로 합치다
use List::MoreUtils qw(mesh);
my @array_1 = 'A' .. 'D';
my @array_2 = 1 .. 4;
my @array_3 = qw( jerry alice wendy );
my @array_new = mesh(@array_1, @array_2, @array_3);
print @array_new;
# :
A=>1=>jerry=> B=>2=>alice=> C=>3=>wendy=> D=>4
1회: 첫 번째 목록에서 A, 두 번째 목록에서 1, 세 번째 목록에서 jerry 꺼내기두 번째: 첫 번째 목록에서 B, 두 번째 목록에서 2, 세 번째 목록에서 앨리스 꺼내기
......
순서대로 유추하라!
[예09] 지정된 문자열에 문자 넣기
List::MoreUtils 의 insert_after 서브루틴
use v5.10;
use List::MoreUtils qw(:all);
my @list = qw/This is a list/;
insert_after {$_ eq 'a'} "longer" => @list;
print @list; #This is a longer list
[예10] 두 개의 목록을 조작한다. 첫 번째 목록은 제곱 다음에 두 번째 목록과 화해를 구한다.List::MoreUtils의 pairwise 서브루틴 사용 가능
use v5.10;
use List::MoreUtils qw(:all);
@m = (1..4);
@n = (100..103);
@x = pairwise { ($a*$a) + $b } @m, @n; #101 105 111 119
[요약]만약에 위의 방식이 일반적인 방법으로 실현된다면 여러 번 반복해서 반복해야 하기 때문에 매우 번거롭다. 복잡한 알고리즘, 데이터 구조를 C로 실현하고 List 모듈에 봉인하면 복잡해 보이는 많은 기능을 실현할 수 있다. 그 중에서 Perl의 강력한 점은 CPAN이고 많은 모듈이 지탱하고 있다는 것을 알 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
cowsay로 현장 고양이에 요시! 되고 싶은 건업무 중에도 현장 고양이에 요시! 하고 싶었기 때문에, cowsay 를 사용해 어떻게든 해 보았습니다. cowsay는 말할 것도없이 오징어 한 서버에 적합한 매혹적인 도구입니다. 살벌한 우리 마음에 일복의 청량을 줍...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.