my $str = "acb^def^123^456"; my $foo = '^'; $foo =~ s/([\\\|\(\)\[\{\^\$\*\+\?\.])/\\$1/; my @fields = split /$foo/, $str; my $out = join '|', @fields; print "$out\n";