#!/usr/bin/perl use strict; my $call = 0; parse(1,0); sub parse { my $curcall=++$call; print "My parameters: @_\n"; while (defined(my $number = shift)) { print "Number: $number from call $curcall\n"; parse(@_) if $number; } } OUTPUT: My parameters: 1 0 Number: 1 from call 1 My parameters: 0 Number: 0 from call 2 Number: 0 from call 1