Perl JOIN in a different way?

arrays, join, perl

Solution

You typically use map for these kinds of things:

#!/usr/bin/env perl
use strict;
use warnings;

my @array = qw(value1 value2 value3);
print join(" OR ", map "a:$_", @array),"\n";

Output:

a:value1 OR a:value2 OR a:value3

`map` is a simple looping construct, which is useful when you want to do apply some simple logic to every element of a list without making too much clutter of your code.

Problem

I am working on a perl module and looking for an output (string) of the form : `a:value1 OR a:value2 OR a:value3 OR ...` The values `value1, value2, value3...` are in an array (say, @values). I know we could use `join( ' OR ', @values )` to create a concatenated string of the form: `value1 OR value2 OR value3 OR ...` But as you see above, I need an additional `a:` to be prepended to each value. What would be a neat way to do so?

Original source