Perlについての質問箱 39箱目at TECH
Perlについての質問箱 39箱目 - 暇つぶし2ch508:500
09/04/06 23:52:45
# 最初はこうだったんですが
if(($str =~ /hoge\((.*?)\).*foo\((.*?)\)/)){
    $hoge=$1;
    $foo=$2;
}

# 位置関係が前後した場合に対応できない事が分かったので書き直して以下に
if(($str =~ /hoge\((.*?)\)/) && ($str =~ /foo\((.*?)\)/)){
    $str =~ /hoge\((.*?)\)/;
    $hoge=$1;
    $str =~ /foo\((.*?)\)/;
    $foo=$1;
}

これを前者と比べるとゴテゴテしてしまったなというところでした。

>1行目のif文
万が一hogeが含まれfooが含まれていないという場合
if文が無いとhogeの値がfooの値にも入ってしまい、それはマズいので入れてます。

ワンライナーな方のコードも読んでみました。$hoge = ($1 eq 'hoge' ? true : false)みたいな用法は知っていましたが、
この方法を右辺にも使えるんですね。自分には新しいです。(?{})というのは知りませんでした。
見た感じ正規表現の中で処理を実行する際に使うんでしょうが調べてみてもうまくヒットさせられませんでした。
もうちょっと知りたいのでキーワードとかあれば教えてください。

$hoge = ($str =~ 正規表現)での代入方法。これ知りませんでした。
あと右辺がリストで左辺もリストだと配列、右辺がリストで左辺がハッシュだと
キー、値、キー、値というハッシュになるというのも便利ですね。
この用法自体は知っていましたが、実際こういう使い方ができるんだなあと。

>>505さんのコードがわかりやすかったのでこれ使っていこうと思います。
>>501,502,503,504,505,506さんレスどうもありがとうございました。色々勉強になりました。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch