2013-04-08 4 views
0

사용자 인수를 배열로 가져 와서 while 루프에 인쇄하려고합니다. 아무도 도와 줄 수 있습니까?while 루프에서 사용자 arugments 인쇄

my @user_args = sort (@ARGV); 
chomp(@user_args); 
my $i = -1; 
while (++$i <= $#ARGV) 
{ 

    print "$ARGV[$i] \n"; 

} 



print "\nStep #2\n"; 
my @user_args2 = sort {$b cmp $a} @ARGV; 
while (++$i <= $#ARGV) 
{ 

    print "@user_args2[$i] \n"; 

} 

이, 내가 그것을 점점 정렬 방법을 알아 내기 위해 지금 노력하고있어 이러한 인수를 기반으로 감산 내 업데이트 된 코드 "어떻게 100로 질문"있는 ABC DEF "OK OK"도와주세요!

+3

예. 'while '을'foreach'로 바꾸고,''perlsyn' (http://search.cpan.org/perldoc?perlsyn)을 닦으십시오. – mob

+0

그것은 할당을위한 것입니다. while 루프에서해야합니다. –

+0

배열을 정렬하는 방법에 대해 더 자세히 설명해주십시오. 입력 내용과 예상되는 결과를 제공하십시오. –

답변

1

while은 조건식이 참일 때 루프를 반복합니다.

사용자가 몇 가지 인수를 제공하면 @user_args이 true가되므로 루프가 입력됩니다. 루프가 @user_args을 변경하지 않으므로 루프가 무기한 반복됩니다.

while을 사용하려면 일정하지 않은 것으로 상태를 변경해야합니다. 예를 들어 루프 본문에서 @user_args을 변경할 수 있습니다. 루프의 각 패스 @user_args의 첫 번째 요소를 제거한다면 ...

+0

정중하게 대답했습니다. – ysth

0

@ikegami와 마찬가지로 루프는 끝이없는 루프입니다. 사용자가 "abc"및 "123"인수를 전달하면 @user_args의 내용은 while 루프의 각 반복마다 ('abc', 123)이됩니다.

이렇게하려면 여러 가지 방법이 있지만 shift을 사용하여 첫 번째 항목을 @user_args 배열에서 빼내는 것이 좋습니다. while 루프 내에서 이렇게하면 배열에서 마지막 요소를 이동하면 while 루프는 더 이상 true가 아니며 while 루프는 종료됩니다.

배열에서 요소를 이동하는 방법에 대한 자세한 내용은 shift documentation을 참조하십시오.

+0

죄송합니다. 그 말씨는 약간 혼란 스럽습니다. 저는 이것을 반영하기 위해 편집 중입니다. – BrianH

0

당신이 원하는 경우 루프는 다음과 같이 배열의 인쇄되는 인덱스를 유지하기 위해, 또 다른 변수 $ I를 사용하는 동안 그것을에서 수행

#!usr/bin/perl -w 
use strict; 

my $i = -1; 
while (++$i <= $#ARGV) 
{ 

    print "$ARGV[$i]\n"; 

} 
ARGV 마지막의 인덱스를 제공합니다 $ #

배열 $ # ARGV의 요소 @ARGV이 같은 경우 :

@ARGV = ("one","two"); 

후 $ # ARGV 번째 요소의 인덱스 1, "2"를 제공한다.

+0

그 사람은 수업에서 그에게 설명하기가 어려울 것입니다 ... – simbabque

+0

@simbabque 제 대답을 편집했습니다. 이제 OP가이 코드를 설명하기가 쉽습니다. –