Hatena::ブログ(Diary)

分室の分室 このページをアンテナに追加

2011-12-10 Sat

【162】 no strict の実験をしようと思ったが、萎えた。

 いろいろと悪あがきしてます。


 アバウトなコードと strict なコードは共存できない…これが原則。が、抜け
道がないわけではなさそうだ。


 例えば、とある都合で jcode.pl を使いたい場合を考えると。。。


…やっぱ無理っぽい。


 require で読み込む時点で、たぶんアウト。これじゃソース全篇を no strict
するしか方法がなさそうだ。つまり無意味。むむー難しいな、これは。おそらく
方法はあるんだろうと思うけど、面倒くさそう…

 たぶん、jacode.pl とかを use strict で書き直した方が早い…そんな感じが
する。もちろん、正式リリースされたスクリプトを改造する、なんて大それたこ
とは、アマチュアの私には出来ません。ていうか、それはもはや Jcode  だし…


うう。厳しすぎます。 "use strict" ってヤツは…
追記:問題なく動きます(詳細はコメントを)。

 明日は 12月11日。ゾロ目の日付だな。何らかのものをアップするつもりだが、
文字コード関連でつまずいてしまった。…とりあえず Jcode.pm を採用しようと
思っている。

 一気に Encode へ移行しようかとも思ったけど、世界中の文字コードに対応し
ているがゆえ、結果として文字コードの自動特定で失敗する確率を高めてしまっ
ているみたいです。そこまで裾野を広げなくても…。一般ユーザーの筆者には無
縁の機能かと…

 『日本語に決め射ち』なら Jcode で充分かと。内部コードが『euc』なことも
レガシーな筆者には分かり易いし。 ただ、現在の Jcode は Encode のラッパー
なので、内部コードは utf8 かもしれないけど(未確認)。


 とりあえず、レガシーなユーザーへの参考になると思って、アップしてみた。

inaina 2011/12/12 13:19 jacode.pl を require するアプリケーションプログラムは use strict; してもしなくてもどちらでも構いません。

hello.pl
--------------------------------
use strict;
require './jacode.pl';
print "Hello, jacode.pl!\n";
--------------------------------

bye.pl
--------------------------------
no strict;
require './jacode.pl';
print "No, jacode.pl!\n";
--------------------------------

jacode.pl 自体は use strict; していませんが、だからと
いってアプリケーションプログラムまで use strict; して
はいけない、という決まりはありませんよ。

foussinfoussin 2011/12/12 23:41 今、仕事から帰ったとこなので、まだ未確認ですが、
丁寧なアドバイスありがとうございます。

知らなかったです。

あとで確認してみます。

foussinfoussin 2011/12/13 03:10 ina さま、確認しました。↓

------------------------------------
#!/usr/bin/perl

# hello.pl

use strict;
use warnings;
require 'jacode.pl';

my $hello = "Hello, jacode.pl!";
my $code = &jcode::getcode(\$hello);
$code .= "";
print $hello, " => ", $code, "\n";

$hello = "こんにちは, jacode.pl!";
$code = &jcode::getcode(\$hello);
$code .= "";
print $hello, " => ", $code, "\n";

=result
c:\usr\edit>hello.pl
Hello, jacode.pl! =>
こんにちは, jacode.pl! => sjis
=cut

__END__
------------------------------------

ちゃんと動くんですね。
私にとっては嬉しい誤算です。感動しました。

私の認識不足でした…。
strict、プラグマ、については特に…ですね。

Perl4 のスクリプトは require でも
例外で止まるものと完全に思い込んでいて、
検証すらしていなかったです。

ダメですね、これじゃ。
おそらく、ご迷惑をおかけしたかと思います。
以後、気をつけたい、と反省してます。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/foussin/20111210/1323500332
リンク元