ishiducaの日記 このページをアンテナに追加 RSSフィード

2009-06-16

[][]合計を表示するワンライナー 20:52 合計を表示するワンライナー - ishiducaの日記 を含むブックマーク はてなブックマーク - 合計を表示するワンライナー - ishiducaの日記 合計を表示するワンライナー - ishiducaの日記 のブックマークコメント

$ perl -le '$sum+=$_ for @ARGV;print $sum;'

メモ。こう使うだけ

$ perl -le '$sum+=$_ for @ARGV; print $sum;' 2 3 4
9

平均出すなら

$ perl -le '$sum+=$_ for @ARGV; print $sum/@ARGV;'
トラックバック - http://perl.g.hatena.ne.jp/ishiduca/20090616

2009-05-03

[][]オトギリさんのホームページから画像収集 17:32 オトギリさんのホームページから画像収集 - ishiducaの日記 を含むブックマーク はてなブックマーク - オトギリさんのホームページから画像収集 - ishiducaの日記 オトギリさんのホームページから画像収集 - ishiducaの日記 のブックマークコメント

事情というか、経緯は voxの記事 を参照してもらうとして、手順だけ。コードはワンライナーで画像収集/perl-users.jpのパクリ以外の何でもんですけど。

該当するウェブページからリンクの貼られた画像ファイルをダウンロードします。使い回しは結構効くんじゃないのかな?

  1. 画像を集めるディレクトリを作る
  2. 画像ファイルのリストを作る(テスト)
  3. 画像ファイルをダウンロードする

1. 画像を集めるディレクトリ (Otogiri) を作る

$ mkdir Otogiri

作っただけじゃワンライナーを実行してもディレクトリーに保存できないので

$ cd Otorigi

する

2. 正しく画像ファイル(.jpg)がリストにできるかテスト

$ perl -MLWP::Simple -e '$,="\n"; print map{ "$ARGV[0]$_" }get($ARGV[0]) =~ m|<a.*?href="([^"]+\.jpg)"|gi;' http://redsky.sakura.ne.jp/

3. 画像ファイルをダウンロードする

$ perl -MLWP::Simple -MFile::Basename -we 'map{$_="$ARGV[0]$_";mirror($_,basename($_))}get($ARGV[0]) =~ m|<a.*?href="([^"]+\.jpg)"|gi;' http://redsky.sakura.ne.jp/

で画像を集める

スクリプト(dl.pl)にするとこう。

#!/usr/bin/perl -w
use strict;
use LWP::Simple;
use File::Basename;

@ARGV == 1 or die "Usage:$0 URL\n";

my $content = get shift; # get $ARGV[0];
@list = $content =~ m|<a.*?href="([^"]+\.jpg)"|gi;

# 正規表現が正しいかチェックする段階で使う
#{
#   $, = "\n";
#   print @list,"\n";
#}

map{ $_ = "$ARGV[0]$_"; mirror($_,basename($_)) }@list;

exit 0;

実行するときは

$ perl dl.pl http://redsky.sakura.ne.jp
トラックバック - http://perl.g.hatena.ne.jp/ishiduca/20090503

2009-03-13

[][][][][][][]続・続・Windowsのコマンドプロントには「ls」コマンドがないので、ワンライナーでそれっぽく代用する 00:17 続・続・Windowsのコマンドプロントには「ls」コマンドがないので、ワンライナーでそれっぽく代用する - ishiducaの日記 を含むブックマーク はてなブックマーク - 続・続・Windowsのコマンドプロントには「ls」コマンドがないので、ワンライナーでそれっぽく代用する - ishiducaの日記 続・続・Windowsのコマンドプロントには「ls」コマンドがないので、ワンライナーでそれっぽく代用する - ishiducaの日記 のブックマークコメント

前述の

とか

を見直していて、こんな書き方もできるなと

$ perl -wl -e '$,="\n"; \
> print map { join "\t",scalar localtime((stat $_)[9]), $_ } @ARGV;' *

stat関数を使って、最終更新日をオプション表示した「ls」コマンドもどきのワンライナー。スクリプト版より情報量が少ないけれど、Stat::lsMode モジュールを使わない分、手軽に使えるんじゃないかと思います。Stat::lsMode モジュールはcpanからインストールする手間があるから面倒な人もいるだろうし。

# 結果
Sun Jan 18 10:28:23 2009    sign.txt
Sun Jan 18 13:51:45 2009    内部監査手順.txt
Sun Jan 25 13:36:08 2009    temp.html
Sun Mar  1 15:20:15 2009    15477800_500.jpg
Sun Mar  8 13:11:02 2009    perl_ls
Thu Feb 19 16:06:56 2009    安全管理規程.txt

まだmap関数とstat関数が飲み込めていないけど、参考にしたところなど

SarifulSariful2012/02/23 16:10Grazi for mkiang it nice and EZ.

crvhjwrmburcrvhjwrmbur2012/02/25 03:2618jHbJ <a href="http://bhiwvkzbhltn.com/">bhiwvkzbhltn</a>

znjenwlznjenwl2012/03/01 01:306WkeFg <a href="http://tgsptrunopdl.com/">tgsptrunopdl</a>

トラックバック - http://perl.g.hatena.ne.jp/ishiduca/20090313

2009-03-08

[][][][]Windowsのコマンドプロンプトには「ls」コマンドがないので、ワンライナーでそれっぽく代用する 09:36 Windowsのコマンドプロンプトには「ls」コマンドがないので、ワンライナーでそれっぽく代用する - ishiducaの日記 を含むブックマーク はてなブックマーク - Windowsのコマンドプロンプトには「ls」コマンドがないので、ワンライナーでそれっぽく代用する - ishiducaの日記 Windowsのコマンドプロンプトには「ls」コマンドがないので、ワンライナーでそれっぽく代用する - ishiducaの日記 のブックマークコメント

> perl -wl -e '$,="\n"; print <*>;'

当然、Perlがインストールされていないと意味がない。あと、隠しファイルの場合は「<*>」を「<.*>」にする。「<.* *>」もあり。


追記 2009.03.08

任意の拡張子のファイル(この例だと「.txt」「.pl」)をリストする時には

> perl -wl -e '$,="\n"; print @ARGV;' *.txt *.pl

KipliKipli2012/06/07 10:17Fiindng this post has solved my problem

bqtgebmvrkbqtgebmvrk2012/06/07 20:44tSnpI6 <a href="http://szepiuqnbvdq.com/">szepiuqnbvdq</a>

bgebwyvpcsbgebwyvpcs2012/06/12 03:41QuzFIv <a href="http://bevrhjshdskz.com/">bevrhjshdskz</a>

vqnxgsvqnxgs2012/06/13 09:00uKYnq0 , [url=http://jzoegncuwcdb.com/]jzoegncuwcdb[/url], [link=http://jtzcwsjlubwn.com/]jtzcwsjlubwn[/link], http://irrladcrhhgr.com/

トラックバック - http://perl.g.hatena.ne.jp/ishiduca/20090308

2009-02-28

[][][]findコマンドを利用して動画リストを作ってみたよ。 20:25 findコマンドを利用して動画リストを作ってみたよ。 - ishiducaの日記 を含むブックマーク はてなブックマーク - findコマンドを利用して動画リストを作ってみたよ。 - ishiducaの日記 findコマンドを利用して動画リストを作ってみたよ。 - ishiducaの日記 のブックマークコメント

動画の連続再生をさせるためのリストを作りたいと思ったので、試してみました。

動画リストは .m3u 形式で作ります。これをVLCメディアプレイヤーなんかで読み込んで再生します。

$ find $HOME \( -name '*.mpg' -or -name '*.wmv' \) -print |
> perl -wplaF'/' -e 'BEGIN{ print"#EXTM3U"; } s|.+|#EXTINF:$F[-1]\nfile://$&|;' > movies.m3u

今回は試しということで、.mpg と .wmv だけですが、.mp4 なんかも追加できそうです。ただ、これだと並び替えなんかはやってないので、実用性は低いですが。

そのへんは、ぼちぼち。... やること多いなぁ


追記(2009.02.28 20:55)

perlの部分の依存度を高くしてみた

$ find $HOME -type f -print |
>   perl -wnlaF'/' -e 'BEGIN{ print "#EXTM3U"; } /.+\.wmv$/.+\.mpg$/i and
>     print "#EXTINF:$F[-1]\nfile://$&";' > movies.m3u

また、追記すると思う

トラックバック - http://perl.g.hatena.ne.jp/ishiduca/20090228