#!/usr/bin/env perl use strict; use warnings; use Data::Dump; use Getopt::Long qw{GetOptionsFromString}; my ($x, $y, $z) = (0, 0, 0); my %opts = ('x=i', \$x, 'y=i', \$y, 'z=i', \$z); dd \%opts; GetOptions(%opts); dd \%opts; print 'Enter new: '; chomp(my $new = <>); GetOptionsFromString($new, %opts); dd \%opts; #### $ pm_1184309_getopt_long_opts_from_string.pl -x 1 -y 2 { "x=i" => \0, "y=i" => \0, "z=i" => \0 } { "x=i" => \1, "y=i" => \2, "z=i" => \0 } Enter new: -y 3 -z 4 -x 0 { "x=i" => \0, "y=i" => \3, "z=i" => \4 }