コマンドプロンプト版
perl -MEncode::Locale -MList::Util=shuffle -E "binmode STDOUT, ':encoding(console_out)'; say Encode::decode(cp932 => 'フルーツ') . join '', shuffle split //, Encode::decode cp932 => 'ポンチ';"

コマンドプロンプトの文字コードがcp932だから文字列リテラルもcp932、つまりソースの文字コードがcp932です。昔使えてたencoding指定は今時のperlでは廃止していて使えない。なもんで文字列リテラル毎にperlの文字コードX(なんか格好いい)にデコードして処理します。

Linuxコンソール版
perl -CSD -Mutf8 -MList::Util=shuffle -E "say 'フルーツ' . join '', shuffle split //, 'ポンチ';"

コンソールの文字コードがたまたまutf8なのでその辺の変換処理を省略、コマンドラインオプションで標準入出力をutf8に指定しました。この手のコマンドラインでLinuxとWindowsに使えるケースを知らない(´・ω・`)

フォロー

ネットで検索して出てくるブログにある記事は大抵WindowsかLinuxのどちらかしか使っていない人が書いているのでどっちで動くコマンドラインか書いてないので他方で動くと思って実行するとまあ失敗する。

どっちでも動くスクリプトならなんとかできる。
#!/usr/bin/env perl

use v5.26;
use utf8;
use warnings;
use strict;

use Encode::Locale;
use List::Util qw/ shuffle /;

binmode STDOUT, ":encoding(console_out)";

say "フルーツ@{[join '', shuffle split //, 'ポンチ']}";

シンタックスハイライト(キーワードに色が付く奴)欲しいっす

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。