Perlは難解 part1

プログラミング
スポンサーリンク

掲示板に宣伝がよく書き込まれるので、
ぷましゃまの掲示板みたいに、特定の単語が含まれなければ書き込めないみたいに改造しようと思ったのですが、
Perlが難しくて、難航中です。
JAGA GOGO 掲示板の方は、簡単に改造できたのですが。
今回の「Mireille」の改造は難しい。(>_<)

たとえばたとえばなのですが、

例1

my$hoge=$IN{$_};

↑これ $_ ってのがどういうことか分からない。
たしか$つけるとグローバル変数になるんでしたっけ。
でも、
$_がどこからきているのかぱっと見謎。というかまだ見つけてない。
あとあと、{ }これどういう意味だろう。文字使ってる部分もあったので連想配列かな。
と思って今調べてみたらハッシュ。当たり。

でも、$_の中身がよく分からないので、
うん。

例2

@hoge&&last;

continueがnext。breakがlastとか。
唐突に、@hoge&&last; っていう文章が入っていたり。
@
hoge&&last; これどういう意味だろう。
lastがbreakだとして、@
hogeってが@ついてるから配列変数?
今調べたら、これ配列の要素数っていう意味ってことが分かりました。
ということは、要素数&&break; みたいな文章。
これがfor文の中にあります。

もしかしてトリッキー?なソースコードなのかな。
Perlぜんぜん分からない自分としては、とてもカオスなことに。

例3

$HOGE{'test'} and !($PIYO{'test'} =~ /^多分正規表現) or push(@abc,'***');

これとか超難解です。(><)
○ and ○;
で完結しているというコード。
C言語で&&と同じ意味なのかな。左側でfalseなら右側を実行しないとか。
でも左側が見た感じ、真偽値にならないような気がするんですが。
右も、よくよくみると ○ or ○ になっていますね。
○ and (!(○ or ○));
まとめてみるとこんな感じに。
右側の!は、多分否定を表すのかな。でも真偽値が出たところで、
if文でもwhile文もでないんだから、必要ないような気がするのですが。
これも、迷宮入りということではい。

例4

push(****)if@hoge;

あと最後にこれです。
pushはpushで1つの関数だと思うのですが、(リストに値を追加する関数)
その右側にセミコロン無しで、いきなりif文がきています。
といっても、if文の中身がないですが。

Perlの入門サイトとか見ても、乗ってないですし。
調べるにも、検索ワードが思いつかないです。

とにかく、NGワードの部分だけでもなんとか頑張って改造したいです。
Perl分かる方は、ぜひこっそり教えてください。(^o^)


後々調べたら、
Perlって後置形式のifとかがあるらしい。

if($a==1) {
$a = 2;
}
↓

$a = 2 if($a==1);

ということは、④は、それを利用しているってことですね。
しかし、②と③がまだ分からない。

いや……もしかして②は、③で考えたように

@hoge&&last;

は次のようになるのかな。

if(hoge.length>0) { break; }

ということで、③もこれと同じ感覚で展開できそうなんですが、
!(否定)が入っている意味がどうしても分からないです。

myってのは、ローカル変数の宣言方法みたい。


③をよくみたら、

A and (!(B or C));

じゃなくて

A and (!B) or C;

でした。[´・ω・`]

ということは、展開すると次のような感じかな…。

a = A;
if(a==true) {
b = B;
if(b==false) {
C;
}
}

なんだか、「Perl難かしい」というより、
「トリッキーな?コード難しい」って感じですね。εミ(っ>_<)っ

Perl難かしい2 へ続く

コメント

  1. […] Perl難かしいの続き。 […]

タイトルとURLをコピーしました