Perlで文字列結合しながらs///演算子で置換する方法
Perlで文字列結合しながらs///演算子で置換する方法を紹介します。
お遊びレベルの内容ですのであしからず。
1.はじめに
次のように文字列の結合を行うサンプルがあります。
#!/usr/bin/perl
use strict;
my $a = 'a-1';
my $b = 'b-1';
my $c = 'c-1';
my $x .= $a . $b . $c;
print $x;
実行結果
a-1b-1c-1
が、「a-1」「b-1」「c-1」の「-」を「_」に変更して出力する必要が生じました。
ただし、値を代入するときに変更できない条件とします。また、結合したあとの$xを変換することもできない条件とします。
この条件の場合、赤字のs///演算子を追加して、
#!/usr/bin/perl
use strict;
my $a = 'a-1';
my $b = 'b-1';
my $c = 'c-1';
$a =~ s/-/_/;
$b =~ s/-/_/;
$c =~ s/-/_/;
my $x = $a . $b . $c;
print $x;
という風にする解が考えられますが、文字列結合のときにまとめて変換できないものでしょうか。
2.文字列結合しながらs///演算子で置換する
文字列結合のときにまとめて変換するには、次のように記述することで実現できます。
#!/usr/bin/perl
use strict;
my $a = 'a-1';
my $b = 'b-1';
my $c = 'c-1';
(my $x = $a . $b . $c) =~ s/-/_/g;
print $x;
実行結果
a_1b_1c_1
Posted by yujiro このページの先頭に戻る
- Perlでansibleライブラリを作成する方法
- perlのCPANモジュールからRPMを作成する方法
- Perlで「Subroutine permission redefined at~」を抑止する方法
- XML::Simpleのインストールでエラーになる場合の対処
- YAML::Tinyで「YAML::Tiny found bad indenting in line~」というエラーになる場合の対処
- Perlの正規表現を使って文字列をまとめて取得する方法
- Perlのハッシュでキーの有無を調べる方法
- perlで配列の途中の要素を削除する方法
- YAML::Tinyでコロンを利用する方法
- Perlで改行コードがCRのファイルを読み込む方法
- Perlで「Possible precedence issue with control flow operator」という警告の対処
- PerlのLWPで「Can't verify SSL peers without knowing which Certificate Authorities to trust」というエラーになったときの対処
- Perl+Windowsでファイルを再帰的にリネームする方法
- Perlプログラムの中でファイルの一部を書き換える方法
- Perlの「Bareword "%s" not allowed while "strict subs" in use~」というエラーについて
トラックバックURL
コメントする
greeting