The List::MoreUtils module has a firstval function, which will return the first value in a list that satisfies a certain constraint. It is very useful for writing concise and readable code. It is not a core module and you may need to install it.
As others have said, all you need in your regex is /duplex/, as that will check that the string contains the string. You can enhance it with /duplex/i which performs a case-insensitive match instead.
Finally, if you are writing split /\s+/ then you almost certainly want split ' ' instead; that is a literal single-space string, not a regex, and it is the default for split if you don't provide the first parameter. The difference is that, if the target string starts with whitespace then spltting with /\s+/ will return an empty string as the first element of the list, whereas with ' ' it will return just the non-space characters. If you pass no parameters at all to split then it is equivalent to split ' ', $_ which is often what you want.
This short program demonstrates these points.
use strict;
use warnings;
use List::MoreUtils 'firstval';
$_ = 'simplex full-duplex half-duplex';
print firstval { /duplex/ } split;
output
full-duplex
*.is invalid - it need's to be.*.