どうも気になったので。。。 shag の日記 - 日本語(EUC-JP)の substr 今の Perl(5.8 以降)は文字列が utf8 だったら標準添付の substr() を使って終了なネタなわけだが、わけあって EUC-JP な文字列で日本語も 1 文字と数えて substr をするサブルーチンを考えてみた。今さら。 かの有名な Perlメモに日本語(EUC-JP)を含む文字列の split というのが(文字単位に分割する)あるんだけど、これを参考に euc_substr() というサブルーチンを書いてみた。一応 offset だけでもイケル。 なんか、euc_substr($str, 0, 5) と、LENGTH を 5 に指定しているのに、6 文字切り出されるのは正しい動きだと思いがたかったのと、 use strict; use Encode; sub euc_substr
$ perl -v This is perl 5, version 20, subversion 3 (v5.20.3) built for amd64-freebsd-thread-multi Copyright 1987-2015, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl"
# モジュールの読み込みと関数のインポート use File::Copy qw/copy move/; copy関数でファイルをコピー、move関数でファイルを移動することができます。rename関数というファイルを移動する標準関数がありますが、ファイルシステムを隔てた移動に対応していません。ファイルを移動する場合はFile::Copyのmoveを使用するのがよいでしょう。またmoveはディレクトリを移動するときも利用することができます。 # ファイルのコピー copy($from, $to); # ファイルの移動 move($from, $to) ファイルをコピーするサンプルです。ファイルのコピーに失敗(※1)したときのためにエラー処理を行います。エラーメッセージにはOSのエラーメッセージ「$!」を含めるようにします。 # ファイルのコピー my $from = 'xxx'; my $t
■Windows版Perlの細道・けもの道 ■ナビゲータ [南北館(最初のメニュー)] [Windows版Perlの細道・けもの道] [1.準備編] [2.基本編] [3.応用編] [3-1.固定長データとCSVデータとの変換] [3-2.重複データの処理] [3-3.フォルダ内の一括処理] [3-4.1つのファイルを複数のファイルに分割する] [3-5.文字コードの変換] [3-5-1.文字コードの変換(Encodeモジュール利用)] [3-5-2.文字コードの変換(perl IO レイヤ使用)] [3-5-3.文字コードの変換(open プラグマ 使用)] [3-6.半角全角変換] [3-7.多次元配列の処理] [3-9.その他] [スクリプトと入力データのサンプル] rubyではどう処理する? 同じことをrubyではこうしています。 3.応用編 3-5.文字コードの変換 3-5-1.
Perlにはmkdir()やrmdir()、unlink()といったディレクトリの作成や削除関連の関数は用意されているのですが、ファイルコピーに関する関数は用意されていません。そのため、system()を使ってシステムのコマンドを呼び出すか、モジュールを使う必要があります。 system()からシステムのcpコマンドを呼び出した場合 system("cp ./a.csv ./b.csv"); モジュールを使う場合は、デフォルトでインストールされているFile::Copyが便利です。File::Copyにはcopy()、move()、syscopy()、rmscopy()が用意されています。 File::Copyモジュールを使った場合 use File::Copy; copy("./a.csv","./b.csv") or die "error: $!"; copy()の実行でエラーが発生す
Perl › 演算子 › ファイルテスト › here ファイルが存在するかどうかを確認するには、ファイルテスト演算子「-e」を使用します。 -e $file ファイルが存在すると真値を、存在しないと偽値を返します。ディレクトリやシンボリックリンクなどもファイルとして扱われます。Unixではディレクトリも特別なファイルとみなしファイルという概念でとらえるからです。 通常ファイルが存在するかどうかを確認 ディレクトリではない通常のファイルが存在するかどうかを確認したい場合は、ファイルテスト演算子「-f」で確認できます。 -f $file 通常ファイルが存在すると真値を、存在しないと偽値を返します。通常ファイルとはテキストファイルやバイナリファイルなどのデータを格納しているファイルのことです。 存在を確認できるファイルの種類 その他に、ディレクトリの存在やシンボリックリンクの存在を確認できるフ
► 2017 (1) ► 2月 (1) ► 02/25 (1) ► 2014 (3) ► 9月 (1) ► 09/22 (1) ► 6月 (1) ► 06/25 (1) ► 1月 (1) ► 01/21 (1) ► 2013 (15) ► 9月 (1) ► 09/30 (1) ► 6月 (7) ► 06/30 (1) ► 06/26 (2) ► 06/22 (2) ► 06/19 (1) ► 06/09 (1) ► 4月 (3) ► 04/19 (1) ► 04/04 (1) ► 04/03 (1) ► 2月 (2) ► 02/28 (1) ► 02/03 (1) ► 1月 (2) ► 01/11 (1) ► 01/07 (1) ▼ 2012 (113) ► 12月 (6) ► 12/13 (1) ► 12/08 (1) ► 12/05 (2) ► 12/03 (1) ► 12/01 (1
Perl で半角全角が混じった文字列を指定した文字数で切り取るメモです。 早い話、PHP の mb_substr 関数ライクなものを Perl でやってみようと思います。 調べるといくつか方法があるみたいですが、自分的にしっくりきたのは Perl の substr 関数を使う方法です。ただ、そのままでは上手く切り取れないので文字列は一度、内部コードにエンコードする必要があります。 何はともあれソースコードはこんな感じになります。 #!/usr/bin/perl ## file: mb_substr.pl use strict; use warnings; use Encode; my $enc = find_encoding 'utf8'; ## EUC-JP の場合 # my $enc = find_encoding 'euc-jp'; my $crop = $ARGV[0] || ex
jcode.plでdefined(%hash) is deprecated at ../perllib/jcode.pl line 684.のエラー defined(%hash) is deprecated at ../perllib/jcode.pl line 684. (Maybe you should just omit the defined()?) defined(%hash) is deprecated at ../perllib/jcode.pl line 693. (Maybe you should just omit the defined()?) sub z2h_euc { local(*s, $n) = @_; &init_z2h_euc unless defined %z2h_euc_inited; $s =~ s/($re_euc_c|$re_euc_kana)/
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
hydroculのメモ > プログラミング言語の比較 > 文字列 > URLエンコード / URLデコードするには (urlencode, urldecode) URLエンコード / URLデコードするには (urlencode, urldecode) 2014/09/27 各プログラミング言語でのURLエンコードまたはURLデコードする方法。 PHP 2014/02/18 例 // URLデコード $str = urldecode("%2B+%3D%26 %E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A"); echo $str; // => + =& あいうえお urlencode 関数 | PHP Manual http://www.php.net/manual/ja/function.urlencode.php urldecode 関数 |
Perl › 関数 › here 配列を並べ替えるにはsort関数を使用します。第1引数には比較のためのコードブロックを渡します。昇順で並べ替える場合は$aを$bより先に記述し、降順で並べ替えるには$bを$aより先に記述します。比較演算子には数値として比較したい場合は<=>を使用し、辞書順で比較したい場合はcmpを使用します。コードブロックの直後にカンマがないことに注意してください。 # 昇順で並べ替え @sorted = sort { $a 演算子 $b } @array; # 降順で並べ替え @sorted = sort { $b 演算子 $a } @array; 並び替えのサンプル 数値の昇順で並べ替えるサンプルです。@numsは(2, 3, 5, 11)になります。 # 数値の昇順で並び替え my @nums = (5, 11, 3, 2); @nums = sort {$a <=
Perl › 関数 › here quotemeta関数を使用すると、正規表現で利用される文字列を通常の文字として扱うことができます。ワード文字以外のすべての文字の直前に\がつけられます。 # 正規表現文字列を通常の文字として扱う $ret = quotemeta $str; 正規表現文字を含んだ文字列を通常の文字列としてパターンマッチさせるサンプルです。 # 正規表現文字を含んだ文字列を通常の文字列としてパターンマッチ my $message = 'This message contains a{2}'; my $match = "a{2}"; $match = quotemeta $match; if ($message =~ /$match/) { print "Match!\n"; } quotemetaは正規表現の特殊文字である\Qと同じ意味を持ちます。上記のquotemetaは
1-3. PERLの強味、文字列操作をやるぞ PERLの文字列操作は、awkを基本としていて非常に便利ですが、はじめての人には 判りにくいかもしれません。まずは、何が出来るのかと、その処理の理解のポイント を説明して、その後例を示して細かく説明します。 1-3-1. 文字列操作で何が出来る? PERLの文字列操作は、主に行単位で行います。これは、前に示したwhile等で 判るように行毎に同じ処理を考えると納得がいくと思います。 それで、できる事は ○文字列の検索 ○文字列の削除 ○文字列の置き換え ○文字列の抽出 これらの処理が、簡単な記述で実現できます。 1行単位の処理だと言う事を頭に入れておくと、非常に考えやすいです。 1-3-2. 文字列検索 まずは、良く使う”文字列の検索”いきます。 以下のプログラムを(pr31.pl)で作って下さい。 #!/usr/local/bin/jperl
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く