どこで混乱しているのかわかりませんが

 Perlが扱うUTF8文字列なファイル名はWindows(あるいはそこで動くアプリケーション/ツール)にとっての「正常な」ファイル名ではありません*1。少なくともPerl以外のアプリケーション/ツールで作った「ファイル.txt」はお互いに開けます*2がPerlでは開けませんし、逆もまたしかりです。

以下、基本的に全部CP932環境のWindowsでの話。
1) こういうスクリプトをCP932で書くとWindows環境では「ファイル.txt」と読めるファイルが出来ます。

open my $fh, '>', 'ファイル.txt';
print $fh 'test';
close $fh

2) こういう風に書いても同じです。

use utf8;
open my $fh, '>', 'ファイル.txt';
print $fh 'test';
close $fh

3) 同じスクリプトをutf8で書くと、Windows環境では「繝輔ぃ繧、繝ォ.txt」に見えるファイルが出来ます。なぜかはそのスクリプトをメモ帳で開けば一目瞭然。Windows的にはこう書いてあるようにしか見えませんから。

use utf8;
open my $fh, '>', '繝輔ぃ繧、繝ォ.txt';
print $fh 'test';
close $fh

4) ただし、use utf8;してあってもフラグのついたファイル名にはなりません。その辺はPerlがちゃんと処理してくれていますから。

5) また、このファイルは、「ファイル.txt」では開けませんが、「繝輔ぃ繧、繝ォ.txt」として開けばWindows上のどんなツールからでも正しく開けます(その意味で、utf8表記では「ファイル.txt」だったというコンテキストを忘れればきわめて正常なファイル名であると言えます)。

6) 同じファイルを、たとえばファイル共有なりFTPなりを使ってutf8ベースの環境に移すと、Windows環境では「繝輔ぃ繧、繝ォ.txt」に見えていたファイルが「ファイル.txt」と表示されるようになります。

似て非なる例。

7) こういうスクリプトをCP932で書くとWindows環境では「表示.txt」と読めるファイルが出来ます。

open my $fh, '>', '表示.txt';
print $fh 'test';
close $fh

8) こう変えると「侮ヲ.txt」というファイルが出来ます。いわゆるバックスラッシュ問題です。

open my $fh, '>', "表示.txt";
print $fh 'test';
close $fh

9) もう手元の環境には入っていませんが、昔流行ったjperlは「CP932の世界の中で」この辺をうまく処理してくれていました。

10) use utf8を使うと「utf8の世界の中では」jperlと同じように適切な処理をしてくれます。

11) おそらくこの辺でなにかごっちゃになっているんだと思いますが、utf8で書いた「ファイル.txt」という文字列を使ってCP932で書かれた「ファイル.txt」というテキストを探すのは(明示的な変換をかまさない限り)無理な相談。「use utf8してもマルチバイトファイル名を正しく扱えないことがある」んじゃなくて、「use utf8の有無にかかわらず、utf8で書いたファイル名でCP932の名前がついているファイルを呼び出そうとするのが間違い」なのであって、utf8の話をしているところに茶々を入れるような話じゃありません(実際、utf8の表記を無理矢理CP932として解釈したファイルなら正しく呼び出せるわけですから)。

12) どうしてもutf8で書いたuse utf8してあるスクリプトの中から自動的にファイル名をCP932に変換させてファイルを呼び出したいのであれば前のレスで書いたような方法が考えられるわけですが、そのような自動変換は、たとえば一時的にWinで編集するけれど最終的には「繝輔ぃ繧、繝ォ.txt」のままファイルを返したいときには結局役に立たない。globでもなんでも、その一見化けた(ただしほかの環境では意味のある)ファイル名のままで何の問題もなく扱えるのだから、必要がない限りファイル名なんていじらないのが吉というもの。

13) なんにせよ、CP932の特殊事情はさておき、Perlはおおむねマルチバイトのファイル名を正しく扱えています。正しく扱えていないように見えるときは、おおむねスクリプトを書く人がどこかで環境の相違を無視していると思ってよいでしょう。

14) ついでながら、printの場合にwarningが出るのは、出力したものを再度読み込むときのことを考えれば意味がわかるはず。従来のJcode::convertしか使っていない人から見ると一度Encode::decodeかけたあとはもう変換する必要なんてなさそうに見えますが、実際にはそうならない(ファイルに出力してしまったらもう一度decodeなりなんなりしなおす必要がある)。ある意味後方非互換の部分だから注意を喚起する必要があったわけで、この辺昔から首尾一貫しているファイル名の話とは次元が異なるものです。