in reply to can we pass two variable to foreach loop

Not exactly. You can set up that kind of thing with Perl's C-style for loop. Perl style for like you show takes single element at a time from a list.

If you can get several hunks of data into each element of the list, you can define ($x,$y) inside the loop and extract the data:

for ([qw/Joe Blow/], [qw/John Doe/]) { my ($x, $y) = @$_; # do something }
or
for ('Joe Blow', 'John Doe') { my ($x, $y) = split; # and so on }

The for loop in your example could be written:

{ my ($x, $y) = ($name, $lastname); # do something }

C-style for can get very baroque, but that's not encouraged, even in C.

After Compline,
Zaxo