#!/usr/bin/perl use strict; use warnings; my $string = '\.foo'; print $string, "\n"; for (1..3) { # Note the concatenation instead of re-quotemeta-ing $string .= quotemeta "*[$_]"; print $string, "\n"; } __END__ # prints: \.foo \.foo\*\[1\] \.foo\*\[1\]\*\[2\] \.foo\*\[1\]\*\[2\]\*\[3\]