#! /usr/bin/perl -w use strict; sub make_gen { my $num = shift; sub { sprintf '%09s', $num++ } }; my $g1 = make_gen( 1 ); print $g1->(), "\n", $g1->(), "\n\n"; my $g2 = make_gen( 'zzx' ); print $g2->(), "\n" for 1..4; __END__ output: 000000001 000000002 000000zzx 000000zzy 000000zzz 00000aaaa