#!/usr/bin/perl -w use strict; use warnings; use v5.010; my $string = "AA=1,BB=2,CC=3,DD=4,EE=5"; my $pattern = "AA\=(\\d).+\,EE\=(\\d)"; # Use subroutine my @first = get_vars( $string , $pattern ); say "1: @first"; $pattern = "AA\=(\\d).+\,CC\=(\\d).+\,EE\=(\\d)"; my @second = get_vars( $string , $pattern ); say "2: @second"; # Use list context $pattern = "AA\=(\\d).+\,EE\=(\\d)"; my @third = ( $string =~ m/$pattern/ ); say "3: @third"; $pattern = "AA\=(\\d).+\,CC\=(\\d).+\,EE\=(\\d)"; my @fourth = ( $string =~ m/$pattern/ ); say "4: @fourth"; sub get_vars { my ( $string , $pattern ) = @_; if ( $string =~ m/$pattern/ ) { return ( $1 , $2 , $3 , $4 , $5 ); } }