文字列と別の文字列を連結して一つの文字列にする場合、 Perl では文字列と文字列をドット(.)で結びます。ここでは Perl のプログラムで文字列を連結する方法について解説します。
Just like print, but implicitly appends a newline at the end of the LIST instead of any value $\ might have. To use FILEHANDLE without a LIST to print the contents of $_ to it, you must use a bareword filehandle like FH, not an indirect one like $fh. print と同様ですが、 $\ の値の代わりに LIST の末尾に 改行が暗黙に追加されます。 $_ の内容を表示するために LIST なしで FILEHANDLE を 使用するには、$fh のような間接ファイルハンドルではなく、FH のような 裸の単語のファイルハンドルを使わなければなりません
ipmsg.pl - Perl IP Messenger Perl 5 によるネットワークプログラミングの習作として、題材として手軽な IP Messenger を作成しました。IP Messenger は UDP で通信を行ないます。Perl で実装するなら、Socket パッケージの socket, send, recv を使えば、IP Messenger とのやりとりが実現できます。ここで紹介しているソースリストは、習作としては少々複雑になってしまいましたが、IP Messenger プロトコルのほとんどのコマンドを実行できます。 ここでの UDP による通信を Perl で行なう方法については、以下の文献を参考にしました。 斎藤、小山、前田、布施、「新Perlの国へようこそ」、13.10.2 節「UDP」、サイエンス社, 1996. IP Messenger に関しては「IP Me
Perlの文法をチェックする Perl のプログラムは C 言語のプログラムのように実行する前にコンパイルという作業は必要ありません。プログラムを作成したらすぐに実行することができます。逆に実行してみないとプログラムが文法的に正しいかどうか分かりません。 そこでプログラムの実行前に、文法的に間違っている部分がないか確認する方法が用意されています。文法のチェックだけを行うには、次のように実行してください。 オプションの -c を付けて実行すると、プログラムを実行せずに文法のチェックだけを行ってくれます。またオプションの -w を付けて実行するとプログラム中の識別子の利用方法についてチェックを行ってくれます。そこで 2 つのオプションを合わせて -cw を付けて事前にチェックだけを行います。 それでは実際に試してみます。次のような簡単なコードを記述したプログラムを sample.pl という名
546 名前:492[sage] 投稿日:2015/03/05(木) 02:11:42.93 ID:uLqFeG+d http://pastebin.com/B3ymp66m 鯖から受けとったクッキーで通信するように変更した 出来ればWebスクレイピングでRangeヘッダーに対応させたいところ 整合性はお察し 自己満で作ってるだけなので使う意味はあんまりない 699 名前:492[sage] 投稿日:2015/03/09(月) 22:37:09.95 ID:e89pzUxG http://pastebin.com/DD2QPHat 色々と手を加えたので一応上げてみる ・Webスクレイピング時のRangeへ対応 ・スレの更新チェック(HEAD)へ仮対応 ・eqと==を間違えるとんでもないミスを修正 ・BEがちゃんと取得出来てなかったのを修正 ・daemon化をもうちょっとまともにした ・整合
Slim3 の application_ja.properties にマルチバイトを記述するには、文字列を UTF-16LE に変換して16進数でダンプする必要があることに気が付いた。 この方法を Java でやる方法がわからなかったので、Perl で書いてみた。 #!/usr/bin/perl use strict; use warnings; use Encode; use utf8; my $unicodes; my $string = "タイムスタンプ"; my @chars = split '', $string; foreach my $char (@chars) { $unicodes .= '\\u' . unpack('H*', encode('utf-16-le', decode_utf8($char))); } # BOM は付加していない # 付加する場合は、\uf
今までPerlで配列からハッシュを作るときは、for文とかwhile文を使っていたのですが、ふと、mapできれいにつくれるのでは?とぐぐったらできることが判明したのでそのメモ。 mapを使わないいけてない方法 こんな感じで、最初にハッシュとかハッシュリファレンスを宣言してループ文を使って書く。 my @array = qw/hoge moge foga hoge/; my %hash; for (@array){ $hash{$_} = 1; } mapを使ったいけてる方法 ループ文を書くことなく、さらにmapの仕様による高速作成。く my @array = qw/hoge moge foga hoge/; my %hash = map { $_ => 1 } @array; まとめ 配列のデータをユニークにするときは、List::MoreUtilのuniqとかを使えばいいけど、とりあえず
Perlには、日時の加・減算を扱うモジュールが標準でついてきません。僕の仕事場ではずっと、同僚が作ったオリジナルモジュールを皆で使いまわしていたのですが、今になって、世間的 (CPAN) にはどんなものがあるのか気になって調べてみました。※参考になったのは miyagawa 氏のメールマガジンの過去記事と、perl.com の The Many Dates and Times of Perl なるエントリでした。 今回は数ある日付関連モジュールの中から、Dave Rolsky氏の DateTime モジュールについて、その基本的な使い方について簡単にまとめたので共有してみます。 同氏は上記 perl.com 記事の執筆者であり、この前の YAPC::Asia で DateTime project について講演してくれていた人です。気合の入ったモジュールを作ってくれた事に感謝。 目次 基本
スクリプト言語用のデバッガの使い方 - Ruby, Python, Perl スクリプト言語用の CUIのデバッガの使い方を簡単にまとめました。対象言語は Ruby, Python, Perl です。 私は C, C++ でプログラムを書いているときはデバッガ (主に GNU/Linux 上の gdb) を頻繁に利用します。しかし、スクリプト言語ではそれほどでもありません。これはおそらく次のような理由によります。 ビルドが不要なので printf デバッグが容易 (ある程度大きい C++ のプログラムではビルド時間が長いので printf の挿入はしんどい) 異常終了時にスタックトレースが表示される (Ruby, Python なら自動、Perl の場合は use Carp; $SIG{__DIE__} = \&Carp::confess; など) オブジェクトのインスペクトが簡単 (Ru
名前 perlembed - C プログラムに perl を埋め込む 説明 前書き あなたの欲しいのはどれ? Perl から C を使う perlxstut, perlxs, h2xs, perlguts, perlapi を読みましょう. Perl から Unix プログラムを使う バッククオート及び perlfunc にある system と exec を読みましょう. Perl から Perl を使う "do" in perlfunc 及び "eval" in perlfunc, "require" in perlfunc, "use" in perlfunc を読みましょう. C から C を使う 構成を考え直してみましょう. "><C から Perl を使う> このままどうぞ... 道のり C プログラムのコンパイル C プログラムに Perl インタプリタを追加 C プログラ
■ コマンドを実行する(system) ◆ systemによるコマンド実行 system() は、指定したコマンドを実行します。下記の例では netstat というネットワーク関連の情報を表示するコマンドを実行しています。 system("netstat -a"); 関数の戻り値として 実行ステータス を返します。実行ステータスは実行結果を示す整数値で、通常、成功すれば 0、失敗すれば 0 以外の値になります。 $retcode = system("netstat -a"); system() では、コマンドが終了するまで処理を Perl に戻しません。 ■ コマンドの実行結果を読み取る(1)(`...`, qx/.../) ◆ `...` によるコマンド実行 コマンドの実行結果を変数に読み取るには、`...` を用います。` はクォーテーションではなく、バッククォーテーションなので注意し
perl でオブジェクト指向を目指し、use strictしたプログラムを徹底していくと、どうにかしたくなるのが「ファイルハンドル」の存在です。 open(FD, "test.txt"); close(FD); この FD をオブジェクトとして使い関数に対して引数として与えたりしたいのですが、use strict な環境では my $fh = 'FD'; open($fh, "test.txt"); close($fh); とやっても、エラーになってしまいます。かと言ってこのためだけに no strict refs; ともしたくない。またこの方法では、Perlをマルチスレッド動作させるとき、ファイルディスクリプタの名前空間が衝突し、ファイルが開けなくなる問題もあります。 ネットで情報を漁っていると、こういうときはファイルハンドルを動的生成する方法が紹介されています。 use FileHan
プログラムを書く際に処理をタイムアウトさせたい場合というのはよくあると思います。 そんなときに便利なのが、alarmです。 今回は、Perlプログラムでalarmを使ってタイムアウト処理を実装したいと思います。 alarmは対象の処理が指定した時間(秒)たっても終了しない場合、SIGALRMシグナルを発生させます。 例として、ユーザからの入力を30秒でタイムアウトさせるプログラムを書いてみます。 #!/usr/bin/perl use strict; # タイムアウトするまでの時間(秒数) my $TIMEOUT = 30; print "What your name??: "; alarm($TIMEOUT); my $name = ; my $timeleft = alarm(0); print "Hello! $name"; alarmで囲った部分、ユーザからの入力待つ部分がタイムア
2006年5月27日(土) 00時00分00秒 [Perl/CGI] Perlで出力のバッファリングを無効にするには てっどさんからのネタで、てっどさんが自力で解決した話ですけど(笑)、勉強になったのでメモ。^^; Perlの標準出力はバッファリングされてます。改行「\n」を出力すれば標準出力に出力されますけども、「\n」を出さなければプログラムが終了するまで一切出力されません。 たいていの場合はそれで問題ないと思うのですが、コンソールで何か進行状況を表示させたいとき、「\r」を使って一旦出力した文字を書き直したいと思うこともあるでしょう。例えば、「/」→「|」→「\」→「-」→「/」…のように棒をくるくる回転させたいとか。(笑) そんなときは、バッファリングをしないようにPerlに指示する必要があります。デフォルトではバッファリングされるので、改行を出力しない限り標準出力には何も出力され
2007年03月27日23:30 カテゴリTips tips - MD5のコスト 同一ファイルかどうかを調べるのにMD5を使うというのは、比較するファイルが両方手元にある場合はおすすめ出来ません。 重複ファイルを消すPythonスクリプト 「ファイル名が違っても中身が同じファイルを探してくれる『NoClone』 | P O P * P O P」と 「404 Blog Not Found:perl - File::Find::Identical」にインスパイヤされた話ですが、 プログラム自体は数年前にPerlとmd5sumで書いて、 去年Pythonで書き直しました。 ダウンロードはこちら。その一番の理由は、コストです。 ファイルどおしの単純比較の倍以上します。 以下は、FreeBSD 6.2、Xeon 2.66GHz x 2、400GB ATAPI 7200rpmにおいて、FreeBSD
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く