[ Perl ] 文字列を trim する

Pocket

ここでは、Perl で文字列の trim 処理を行うサンプルスクリプトを掲載しています。実は大分前に、歳はそこそこ食ってる新人君に作らせたモノになります。

スポンサーリンク

コピペかよ!!

実はネット上のサンプルをコピペしただけのモノでした。本人は正規表現の意味も、何がどうして動いているのかも分かっていないようです。お先真っ暗です。orz

新人君がまねたページは、「perl で trim(完全版)」です。

その節はウチの新人がお世話になりました。m(__)m

しかし、折角なので機能をちょっと追加して、パラメータを参照渡しではなく値渡しにした関数を掲載します。

プログラムこぼれ話

世の中で実際に動いているソースやスクリプトは誰かが公開しているものが流用されていることが多いです。もちろん、ほとんどのケースでは修正や再テストが行われますが。

文字列を Trim する

新人君が探してきてくれたスクリプトに以下の修正を加えた trim を行うサンプルスクリプトになります。

  1. パラメータのチェックを追加
  2. 引数を参照渡しから値渡しに変更してリターンする
use strict;
use warnings;

sub trim {

    # 引数を格納
    my $trim_data = shift;

    # パラメータが定義済みか(存在確認)チェック
    if(!defined($trim_data)) {
        return "";
    }

    # 全角スペースを変数に設定
    my $Zs=" ";
    
    # 文字列の先頭をtrim
    $trim_data =~ s/^(?:\s|$Zs)+//o;

    # 文字列の末尾をtrim
    $trim_data =~ s/^(.*?)(?:\s|$Zs)+$/$1/o;
    
    # trim した文字列をリターン
    return $trim_data;
}

上記の関数は以下のように使用します。

my $org_str = "  あなたのお名前なんてーの?   ";

# trim した文字列を変数に代入
my $trim_str = trim($org_str);

なお、元新人君はいまでも、「見た目は大人、頭脳は子供。」だそうです。わたしは関わらないように気を付けています。

私は偏差値40プログラマーなので、彼は30くらいかもしれません。解決知らずのバグ職人です。

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *