If you cannot work out in your head what the substitution actually does (and it's not an easy thing if you are new to all this) then give it a try in some code. The lack of boilerplate in perl really helps when coding up trivial scripts for testing. eg:
#!/usr/bin/env perl
use strict;
use warnings;
for my $word ('lama', 'aaron') {
print "Word is $word\n";
print "without /g the regex becomes: ";
my $r = $word;
$r =~ s/(.*?)[ab](.*?)/$1\[ab\]$2/;
print "$r\n";
print "with /g the regex becomes: ";
$r = $word;
$r =~ s/(.*?)[ab](.*?)/$1\[ab\]$2/g;
print "$r\n";
}
Hopefully running this code will illustrate to you how the substitutions differ because of the /g modifier.