use warnings; use strict; use List::Util qw/first/; @ARGV = qw/create --folder empty --size 50 --additional hey how ---are --you 555/; my $i = first { $ARGV[$_] eq '--additional' } 0..$#ARGV; my (undef,@add) = defined $i ? splice @ARGV, $i, $#ARGV-$i+1 : (); use Data::Dump; dd \@ARGV, \@add; __END__ ( ["create", "--folder", "empty", "--size", 50], ["hey", "how", "---are", "--you", 555], )