because your RE is looking for a "word" (alphanum chars) ending in an ' followed by a word (with possible hyphens) immediately followed by the end of line. this is not the case for "d'aujourd" as there is no end of line. the RE skips this and moves on to "ajourd'hui" which is followed by end of line - ergo a match.
what I believe you want to do is match all wordparts followed by an ' or the end of line like so:
@words = $word =~ /(\w+)['\z]?/g;
perl -le "s,,reverse killer,e,y,rifle,lycra,,print"