2014-01-09 11 views
0

필자는 함수가 있습니다.Perl에서 빠르게 함수를 실행하십시오.

sub main { 
    my $item; 
    $send = item_id(); 
    $send .= item_id2(); 
    $send .= jobproccess(); 
    send_idea($send) && send_idea($send) && send_idea($send); 
} 

그래서 당신이 볼 수 있듯이, 그것의 기능을 실행 send_idea 여러 번. 한 줄로 어떻게 할 수 있습니까?

send_idea ($ 샌드는) 그 일을 어떤 가능한 방법이 & &

4 X.

+3

코드가 반드시 'send_idea'를 여러 번 실행할 필요는 없습니다. 'send_idea'의 반환 값이 0이 아닌 경우에만 수행됩니다. 그게 네가 원했던가 아니면 반환 값에 관계없이 여러 번 실행하는 것이 좋을까? – dms

+0

@TLP는 어떤 의미인지에 상관없이이 문제를 해결하는 방법을 보여주기 때문에 내 의견을 무시할 수 있습니다. 여기에 남겨 두어 생각해보아야 할 것이 분명하다는 것을 분명히하기 위해서입니다. – dms

답변

8

당신은 간단한 루프

for (1 .. 3) { 
    send_idea($send); 
} 

그러나 물론, 여기에 숨겨진 동적이

의 포스트 스크립트 버전입니다

send_idea($send) for 1 .. 3; 

을 만들 수 있습니다. && 연산자는 단순히 명령을 연결하는 것 이상을 수행합니다. 서브 루틴 send_idea()의 리턴 값을 점검하고 그 중 하나가 실패하면 나머지는 실행되지 않습니다. 당신이 포함 된 해당 기능을 원한다면, 당신은 이것은 또한 귀하의 질문에

send_idea($send) or last for 1 .. 3; 

을 기록 할 수

for (1 .. 3) { 
    send_idea($send) or last; 
} 

뭔가를해야합니다, 당신의 문은 &&로 연결됩니다 만, 사실 그것은 단지해야 이 수표를 포함시키지 않으려면 세 가지 별도 진술서를 제출하십시오.

send_idea($send); 
send_idea($send); 
send_idea($send); 

제목에 '빨리'표시되는데 이는 코드에서 멋진 방식으로 기능을 실행하는 것과 매우 다릅니다. 속도가 당신이 원하는 것 인 경우 호출 절차의 마지막 단계에서 수행하는 작업은 결과에 미미한 영향을 미칩니다.

+0

어디에서 했습니까? 마지막으로 .. 갈거야? :) –

+0

@mpapec 괄호를 사용할 때'||'의 더 높은 우선 순위는 필요 없다는 것을 깨달았 기 때문에 다른'for' 루프와 같게 변경했습니다. – TLP

관련 문제