#!/usr/bin/perl use warnings; use strict; use feature qw{ say }; for my $string ( '--server api.blr-ocp1.lab.rbbn.com --username mgore --password abc123', '--server api.blr-ocp1.lab.rbbn.com --token kfjshdssahdvkbvjkbj' ) { if ($string =~ /^--server\s+(?\S+)\s+ (?:--username\s+(?\S+)\s+--password\s+(?\S+) |--token\s+(?\S+))/x ) { say 'Server: ', ${^CAPTURE}{server}; if (exists ${^CAPTURE}{token}) { say 'Token: ', ${^CAPTURE}{token}; } else { say 'Username: ', ${^CAPTURE}{username}; say 'Password: ', ${^CAPTURE}{password}; } } else { say 'No match'; } }