3分間Perlテキストクッキングの連載開始 Perlはテキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれています Linuxサーバーで、複数行の文字列を処理、ファイル内容の検索・置換などに便利 Perlはgitやopensslなどで採用され、Linuxミドルウェアとしての実績豊富 PerlでWeb開発するエンジニア・Perl入学式サポーター
2008年03月30日19:45 カテゴリLightweight Languages一日一行野郎 perl - ワンライナーの書き方入門 まあ、ruby のコマンドラインオプションって、Perl由来ですから。 Rubyでワンライナーを書く方法のまとめ まぁ、Perlもあるしあんまり需要が無いのかも知れませんが。 というわけで、Rubyistにも役立つPerlのワンライナー入門です。 基本中の基本 コマンドとしてのperlは、スイッチがない場合、引数はスクリプト名として扱われます。 % cat hello.pl print "Hello, world!\n"; % perl hello.pl Hello, world! % コマンドライン中の文字列をスクリプトとして解釈させるには、-eを使います。 % perl -e 'print "Hello, World!\n"' Hello, worl
某ソースコード解析ツールを見ていると、各言語の予約語の定義という ものがあり、そういや Perlの予約語ってなんだろうって思った。 予約語の定義とは Wikipediaによると 予約語(よやくご)とは、プログラミング言語において字句的には識別子(変数名、関数名、クラス名など) としてのルールを満たしているにもかかわらず、識別子として使えない字句要素。 という意味のようです。 C言語だと % cat test.c #include <stdio.h> void struct (void) { printf("hello world"); } % gcc test.c test.c:3: error: expected ‘{’ before ‘(’ token test.c:3: error: two or more data types in declaration specifiersこん
追記 その後、optex だけを使ってより汎用的なインタフェースで実装しました。今から使うんだったら、こちらの方がいいと思います。 MS Office ドキュメントや PDF ファイルを grep したり diff したりする - Qiita 追記2 greple の -Mmsdoc モジュールは、1.04 (2020-09-23) から optex -Mtextconv のコードを利用するように変更されています。なので、今はどちらを使っても同じ結果になります。optex を使うと、指定したすべてのファイルを変換してからコマンドを実行するので、多くのファイルを指定すると時間がかかります。-Mmsdoc モジュールの場合は、都度変換しながら処理します。 MS のドキュメントを端末で操作する マイクロソフトという会社は別に嫌いではないが、ソフトウェアさえ作ってくれなければいいのになあと思う。そ
PATTERN pattern 'and +must -not ?optional &function' -x, --le pattern lexical expression (same as bare pattern) -e, --and pattern pattern match across line boundary -r, --must pattern pattern cannot be compromised -t, --may pattern pattern may be exist -v, --not pattern pattern not to be matched -E, --re pattern regular expression --fe pattern fixed expression -f, --file file file contains search
どうもこんばんわ、日々お世話になったり、便利だと感じたOSSを紹介していく、OSS紹介 Advent Calenderの21日目の記事です。 GitDDLとは あるDBスキーマから別のDBスキーマに変更を行う際(=migration)を行う時に使うCPANモジュール Railsなどのmigrationとは違ったアプローチで行う 中に使われている魔法のようなモジュールSQL::Translator::Diffの紹介もします DB migrationとは MySQLなどのRDBMSを用いたアプリケーションを運用していくと、「新しくテーブルを追加したい」「カラムを増やしたい」「インデックスを足したい」などの場面に遭遇することがあります。テーブルを追加するだけであれば、新しくCREATE文を発行するだけで良いのですが、カラムを増やしたいだとかインデックスを足したいとなると、ALTER文を打たなけれ
ニッチな領域に勝機あり!人生をメールサーバに捧げたエンジニアの生存戦略 京都発の技術が東京、どころか世界に羽ばたいています。メールという一見レガシーにも感じられるジャンルで存在感を発揮する、京都のエンジニアの生き方から、技術者としての生存戦略が見えました。 「電子メールのエンジニアになる」——その一言にどのような印象を持つでしょうか。いまさら? もはやロストテクノロジーじゃないの? しかし、Webサイトやサービスの登録に必要なのは、いまだにメールアドレスです。メールはレガシーと思われつつも、なくてはならない仕組みのひとつ。そのメールにこだわり、「自分のエンジニアキャリアにおいてメールは“人生”」と言い切るエンジニアが、京都にいます。キュービックルートでSisimaiを開発した東邦之(あずま・くにゆき/@azumakuniyuki)さんです。 東さんはモダンな手法、モダンな人とのつながり方で
まえがき sedで環境に依存しないワンライナーを書きたかったけど、BSDとGNUの実装で微妙に挙動が違うせいで難しかった。で、いっそのことperlで書いた方がいいのでは、という結論になった。ぐぐったらperlのワンライナーの書き方出てくるけど何でそう動くのか分からなかったのでそれも調べた。そこらへんについてまとめる。 GNU sedとBSD sedの違い、perlからsedへの乗り換え方簡易版、その詳細、という感じでまとめたので知りたいところからどうぞ。 sedにはGNU sedとBSD sedがある sedで とかしようとすると実行する環境によって失敗する。 sedにはBSDの実装とGNUの実装があるからだ。-EはBSD sedで拡張正規表現を使うオプションで、GNU sedで拡張正規表現を使いたければ-rを使う必要がある。 じゃあ拡張正規表現を使わずにデフォルトの正規表現を使えばいいの
#Yokohamarb 50回目で発表したけど残念な出来だったので私を変えたN冊を今更紹介する。 by Yuji Yamamoto on November 16, 2014 なんと開催から1週間以上も経ってしまいましたが、報告です。 先週Yokohama.rb Monthly Meetup #50に参加+発表しました。 以下が私の発表です。 緑化のコツ が、かつてないほどガッカリな発表だったので、Slideshareには上げません。 以下反省点。 事前の練習不足なためか、尋常じゃないぐらい緊張してしまい、体が震えてまともに喋れなかった。 過去にも何度か同じ失敗をしている。どういうパターンでこうなるのかまだはっきり分からないのが悔しい。事前に自分のテンションを高く持って行けてないとこうなるような気がする。 「緑化のコツ」ではなく「電車プログラミングの方法」として発表すべきだった。 毎日通勤電
更新日 2019/5/3 戻る Perlメモへ - メールアドレスの正規表現へ Perl正規表現雑技へ 更新履歴 2019/05/03 「制御文字を除去する」「参考文献」RFC5321日本語訳のリンク修正 2009/08/13 $atextのバグ修正 2009/05/06 「正規表現を簡略化する」追記 2009/04/29 「旧形式を削除する」追記 2009/04/13 「IPアドレスを除去する」追記 目次 RFCに準拠したメールアドレスの正規表現 コメントと空白文字を除去する 制御文字を除去する IPアドレスを除去する 旧形式を除去する 正規表現を簡略化する 参考文献 RFCに準拠したメールアドレスの正規表現 メールアドレスについては RFC 5322 に addr-spec として書かれています. 下記は RFC 5322 に従って導き出した正規表現です. 14,277バイトあります.
といった感じ。ちなみにjava.util.regexとPerlのUnicodeブロックは接頭子Inを使うが、.NETの場合は接頭子Isを使う、という差異があります。 Unicodeスクリプトとブロックの違いがビミョーに見えるけど、ブロックがコードブロックをゴリッと指定したものに対して、スクリプトは特定言語に関係する文字の種類を直接指定するものなのでブロックよりも断定的、って感じで見れば良かなと。ちなみにUnicode関連のドキュメントによるとUnicodeプロパティとスクリプトで日本語の文章を表そうとすると m/(?:(?:\p{Hiragana}|\p{Katakana}|\p{Han}|\p{Latin}|\p{Common}) (?:\p{Inherited}|\p{Me}|\p{Mn})?)+/x; こんな感じになるそうな。実際流通している文章はこれより多様なので現実とは微妙に乖離
Dartのインストールが簡単になっていたので試してみたところ、Perlよりも高速だった。 なにこれ悔しい。 Dart: void main() { final t = new Stopwatch(); t.start(); final a = new List<int>(); for(var i = 0; i < 1000000; ++i) { a.add(i); } for(var i = 0; i < a.length; ++i) { ++a[i]; } var sum = 0; for(var i = 0; i < a.length; ++i) { sum += a[i]; } print(sum); print(t.elapsedMilliseconds / 1000); } Perl: use 5.12.0; use Time::HiRes qw(gettimeofday tv_
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
もしかして: バールのようなもの パールのようなものとは、Perlに類似したプログラミング言語群を指す俗称であり、POKEMONマスターを目指す職業でもある。 用法[編集] 提案書や仕様書、POKEMONにおいて、どの言語を使うのが適切か判断できないときに、「webサービスはパールのようなものを使って開発する」のような形で使用する。 また古典言語しか知らない人が、見たことのないスクリプト言語について説明を求められたときに「これはパールのようなもので書かれています」のように使う。 マスコミなどが「犯人はパールのようなものを使ってホストコンピュータへの侵入をおこなった」のように使うこともある。 特徴[編集] パールのようなものは、以下のような特徴を持つ。例外もあるものの、これらに合致しているほどパールのようなものと見なされる。 短いプログラムを書く目的で開発されたが、その言語をわざわざ使う理由
CONTENTS NAME DESCRIPTION #NAME perllexwarn - Perl Lexical Warnings #DESCRIPTION Perl v5.6.0 introduced lexical control over the handling of warnings by category. The warnings pragma generally replaces the command line flag -w. Documentation on the use of lexical warnings, once partly found in this document, is now found in the warnings documentation. Perldoc Browser is maintained by Dan Book (DBO
Ajaxなアプリケーションにおいて、サーバからJSONを返す場合に、JSON自体はvalidであるにも関わらず、(IEの都合で)エスケープが不足していて脆弱性につながってる場合があるので、書いておきます。 発生するかもしれない脆弱性 JSONのエスケープが不足している場合に発生する可能性のある脆弱性は以下の通りです。 JSON内に含まれる機密情報の漏えい XSS それぞれの詳細については後述します。 開発側でやるべきこと 文字列中のUnicode文字は "\uXXXX" な形式にエスケープするとともに、ASCIIな範囲であっても「/」「<」「>」「+」も同様にエスケープすることにより、前述の脆弱性を防ぐことができます。 Perlであれば、以下のような感じになります。JSON->ascii(1) に続けて、JSON文字列を正規表現で置換しているあたりがキモになります。 use utf8; u
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く