in reply to Special chars in arguments using GetOptions (Getopt::Long)

Getopt::Long is a red herring. You’d have these problems regardless of what program you’re invoking, whether it’s a Perl script, whether its uses a command line parsing module, and which. That goes for your plus sign getting removed, too:

$ cat x.pl
use Getopt::Long;
GetOptions( 'test=s' => \my $opt_test );
print $opt_test, "\n";

$ ./x.pl --test +10
+10

You want to learn about shell quoting. Something like --size \>45 or --size '>45' whatever will do the job, at least on a Bourne-derived shell as is common on Unixoid systems. If you’re using some other kind of shell, find out how to quote things in it. (Btw, contrary to widespread misunderstanding, quoting characters are completely transparent to the program being invoked; you can quote each word on the command line with no difference to the outcome, ie you can just as well say '--size' '>45' or such.)

Makeshifts last the longest.