Thanks! I was using that exact thing but my problem is that I actually want P007 first, then P007b, which is what I would expect from natural sorting (this is how Windows sorts filenames). Once I use natkeysort and force it to lowercase, it sorts backwards from what I expect. I don't understand why they would be different. This also gets the same switch of behavior:
use feature qw( say );
use Sort::Key::Natural qw( natkeysort );
say for natkeysort {$_} qw( P007B_YUM P007_YUM );
say qw(---);
say for natkeysort {$_} qw( P007b_Yum P007_Yum );
say qw(---);
say for natkeysort {$_} qw( P007b_yum P007_yum );
That gets the same switch of order.
P007B_YUM
P007_YUM
---
P007_Yum
P007b_Yum
---
P007b_yum
P007_yum