- ベストアンサー
C言語のisgraph
C言語のisgraph関数 <C++> UINT uint = 66; if(isgraph(uint)){} をPerlに書き換えようとしたんですが、 <Perl> $uint = 66; if(??? =~ /[:graph:]/){} ここまでしか分かりませんでした。 Perlへの正しい変換を教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (5)
- natsuki_tk
- ベストアンサー率35% (99/279)
回答No.6
- nightowl
- ベストアンサー率44% (490/1101)
回答No.5
- nightowl
- ベストアンサー率44% (490/1101)
回答No.3
noname#5910
回答No.2
- MovingWalk
- ベストアンサー率43% (2233/5098)
回答No.1
お礼
$uint = 0x20; if(pack("C",$uint) =~ /[[:graph:]]/){ print 'TRUE'; } else { print 'FALSE'; } は、natsuki_tkさんと異なる結果で、Cと同じくFALSEを得ることができました。 ロケールの違いでしょうか。 上の訂正がこのことでしょうか? でも、natsuki_tkさんの/[\x21-\x7E]/の方が速いでしょうし、 packも必要ないからそれを使うことにして、[:graph:] は使わないことにしました。 将来、isgraphの範囲の定義が変更されることを考えれば [:graph:]を使用した方がいいんでしょうけど。 ありがとうございました。