2013-05-01 4 views
1

...Perl : 무한 루프 배열? I가 유한 배열 무한 루프가 필요

예 : 가능

@name = ('John', 'Helen', 'Dave'); 

1=John 
2=Helen 
3=Dave 
4=John 
5=Helen 
6=Dave 
7=John 
8=Helen 
9=Dave 
...etc 

인가?
감사

+0

나는 당신이 무엇을 요구하고 있는지 이해하지 못합니다. – djechlin

+0

안녕하세요, "무한 루프"가 필요하며 예를 들어 7 '일의 이름이나 125 일의 이름을 알고 계십시오. 감사합니다 – SmV

+0

나는 아직도 당신이 무엇을 요구하고 있는지 이해하지 못합니다. – djechlin

답변

4

그것은 소리 모듈은 배열의 크기 :

foreach my $i (1..100) { printf "%d=%s\n", $i, $name[$i % scalar(@name)]; } 

my @dow = ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); 
print $dow[7 % scalar(@dow)], "\n"; 
print $dow[125 % scalar(@dow)], "\n"; 

등 재미를 들어

+0

완벽한! 감사 – SmV

4

사람이 그렇게 할 이유를 모르겠어요,하지만 당신이 원하는 것을 할 것입니다 : 당신이 인덱스 인덱스 번호와 유한 배열을 필요로하는 것처럼

my $i=0; 
my $cnt=1; 
my @name = ('John', 'Helen', 'Dave'); 

    while($i<scalar (@name)){ 

     print $cnt."".$name[$i]; 
     $i++; 
     $cnt++; 
     $i=$i==scalar(@name)?0:$i; 


} 
+1

'$ C++;'는'$ cnt ++;'이어야합니다. – speakr

+0

@speakr 좋은 캐치! 고맙습니다! – isJustMe

+0

예를 들어 감사합니다! – SmV

1

,이 (값을 반복하는 "무한"큰 배열을 제시에만 STOR 동안 각 가치의 사본 하나씩). InfinitelyLoopingArray.pm 포함

use InfinitelyLoopingArray qw(); 

tie my @dow_lookup, InfinitelyLoopingArray::, 
    qw(Sun Mon Tue Wed Thu Fri Sat); 

printf "%3d %s\n", $_, $dow_lookup[$_] 
    for 0..9, 125; 

:

package InfinitelyLoopingArray; 

use strict; 
use warnings; 

use Carp qw(croak); 

sub TIEARRAY { 
    my $class = shift; 
    return bless([ @_ ], $class); 
} 

sub FETCHSIZE { 
    # Largest supported array index. 
    # Currently 2**31-1 or 2**63-1 depending on the build. 
    return unpack('J', pack('j', -1)) >> 1; 
} 

sub FETCH { 
    my ($self, $idx) = @_; 
    croak "Negative indexes not supported" if $idx < 0; 
    return $self->[$idx % @$self]; 
} 

sub new { 
    tie my @array, @_; 
    return \@array; 
} 

1; 
0

많은 답변 - 그래서,이 무한한만큼 한 번 더

my(@names) = ('John', 'Helen', 'Dave'); 
my $cnt; 
while(1) { 
    print ++$cnt, "=$_\n" for (@names); 
} 

희망 ... :)/적어도 $의 CNT가있는 동안 overlfow/