#!/usr/bin/perl use strict; use warnings; use IPC::System::Simple qw( capturex ); sub get_data { my ($pattern) = @_; return capturex('grep', $pattern, '/etc/passwd'); } my @ids = qw( john james ); { # Assumes each of @ids are "safe". my $pattern = '^\\(' . join('\\|', @ids) . '\\)'; my $permission = get_data($pattern); print($permission); } { # Assumes each of @ids are "safe" and match /^\w/ and /\w\z/. my $pattern = '\b\\(' . join('\\|', @ids) . \\)\b'; my $permission = get_data($pattern); print($permission); }