スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ディレクトリ内のディレクトリ・ファイルを再帰的に扱う。 : Dir.glob

Dir.globメソッドを使用したサンプルスクリプトをメモ。

1.ディレクトリ内のファイル・ディレクトリ名を再帰的に取得して表示。
def item_list(path)
Dir.glob(path + "/**/*").each do |item|
puts 'file : " + item if File.file?(item)
puts 'dir : " + item if File.directory?(item)
end
end

item_list("c:/ruby/ruby19/lib/ruby/gems")



2.ディレクトリ内のソースファイルの行数をカウント。(コメント行は除外)
def count_line(path)
count = 0
Dir.glob(path + "/**/*").select do |item|
File.file?(item) == true
end.each do |file|
open(file, "r").each do |line|
count += 1 unless /^#/ ~= line
end
end
return count
end

count_line("c:/ruby/ruby19/lib/ruby/gems")





テーマ : プログラミング
ジャンル : コンピュータ

Rubyでクリップボードを扱う

ふと思いついて、Rubyからクリップボードを扱えるライブラリを試してみる。

まず、rubygemsからwin32-clipboardをインストール。
問題なく完了。

そして、ネットを検索して見つけたサンプルを拝借して実行。

サンプル
require 'rubygems'
require 'Win32API'
require 'win32/clipboard'


include Win32

puts "The data in clipboard is : " + Clipboard.data



エラー発生。 ( 'A‘)

$ ruby sample_clipboard_2010
0428_01.rb
C:/Ruby/Ruby19/lib/ruby/gems/gems/windows-api-0.4.0/lib/windows/api.rb:1:in `req
uire': 126: 指定されたモジュールが見つかりません。 - C:/Ruby/Ruby19/lib/ruby/g
ems/gems/win32-api-1.4.6-x86-mswin32-60/lib/win32/api.so (LoadError)
from C:/Ruby/Ruby19/lib/ruby/gems/gems/windows-api-0.4.0/lib/windows/api
.rb:1:in `'
from C:/Ruby/Ruby19/lib/ruby/gems/gems/windows-pr-1.0.9/lib/windows/clip
board.rb:1:in `require'
from C:/Ruby/Ruby19/lib/ruby/gems/gems/windows-pr-1.0.9/lib/windows/clip
board.rb:1:in `'
from C:/Ruby/Ruby19/lib/ruby/gems/gems/win32-clipboard-0.5.2/lib/win32/c
lipboard.rb:1:in `require'
from C:/Ruby/Ruby19/lib/ruby/gems/gems/win32-clipboard-0.5.2/lib/win32/c
lipboard.rb:1:in `'
from sample_clipboard_20100428_01.rb:9:in `require'
from sample_clipboard_20100428_01.rb:9:in `
'

モジュールが見つからないって、実際にそのディレクトリ見てみるとしっかりapi.soが入ってるし。
問題がわからないので、とりあえず保留。


参考にしたサイト様
クリップボードを取得するのに、ちょっとひと苦労した
http://suke.cocolog-nifty.com/blog/2009/04/ruby-win32-clip.html
[ruby][win32]クリップボードを操作する
クリップボードを取得するのに、ちょっとひと苦労した
クリップボードを利用する

テーマ : プログラミング
ジャンル : コンピュータ

ファイル・ディレクトリの属性情報を取得

File::Statクラスのインスタンスメソッドを用いて、ファイルやディレクトリの属性情報を取得することができます。
ファイルの最終更新時間や、ファイルサイズなど詳細なファイル・ディレクトリ情報を知ることができます。


dev


ファイルシステムの装置番号


ino


i-node番号


mode


ファイルの属性


nlink


リンクの数。


uid


ユーザーID。


gid


グループID。


rdev


ファイルシステムのデバイスの種類。


size


ファイルサイズ。


blksize


ブロックサイズ。


blocks


割り当てられたブロック数。


atime


ファイルの最終参照時刻。


mtime


ファイルの最終更新時刻。


ctime


ファイル状態の最終変更時刻。

テーマ : プログラミング
ジャンル : コンピュータ

ワンライナーのコマンドラインオプション

ワンライナーを書くためのコマンドラインオプションです。
ワンライナーを試すために、以下のファイルを用意します。

lang.dat
Ruby, Java
Perl, PHP, JavaScript
COBOL, C++, Python

-e
コマンドをスクリプトとして実行する。

$ruby -e 'print "Hello Ruby !"'
Hello Ruby !

-a
オートスプリット。
入力行をsplitして配列「$F」に格納。

$ruby -an -e 'p $F' lang.dat
["Ruby,", "Java"]
["Perl,", "PHP,", "JavaScript"]
["COBOL,", "C++,", "Python"]

-Fパターン
オートスプリットで、入力行をsplitするパターンを指定する。

>ruby -anF, -e 'p $F' lang.dat
["Ruby", " Java\n"]
["Perl", " PHP", " JavaScript\n"]
["COBOL", " C++", " Python"]

-n
ループ内でスクリプトを実行。
「while gets() ? end」で、入力行を読み込む。
読み込んだ行は、「$_」で参照。

>ruby -n -e 'p $_.gsub!(/, /, " : ")' lang.dat
"Ruby : Java\n"
"Perl : PHP : JavaScript\n"
"COBOL : C++ : Python"

-p
-nと同じループ内で実行を行い、自動的に「$_」を出力する。

>ruby -p -e '$_.gsub!(/, /, " : ")' lang.dat
Ruby : Java
Perl : PHP : JavaScript
COBOL : C++ : Python
C:\cygwin\usr\bin\ruby>

-i拡張子
ファイルを編集しコピーする。

>ruby -i.dat.copy -np -e '$_.gsub!(/, /, " : ")' lang.dat上記を実行すると、lang.dat.copyというファイルが作成され、その中身は以下の通り。

Ruby, Java
Perl, PHP, JavaScript
COBOL, C++, Python



参考にしたサイト様
ワンライナーのコマンドラインオプション - Ruby入門勉強ルーム

テーマ : プログラミング
ジャンル : コンピュータ

コマンドライン : デバッグ・動作確認のオプション

コマンドラインでのデバッグ・動作確認に使用するオプション。

-c
文法をチェック。

 ex)
$ruby -c member.rb
Syntax OK

-d
デバッグとしてスクリプトを実行。
"-d"を指定時に、$DEBUGはtrueとなる。

-w
詳細な警告を表示。

-h
オプション一覧を表示。



では、実際にサンプルを作成して、デバッグを行う。
次のようなサンプルプログラムを用意。

member.rb
list = { "Masahiro", "Terumi", "Shinsuke", "Yuki", "Kohei", "Nozomi" }
list.each { |m|
puts m
} if $DEBUG


そして、コマンドラインから実行する。
$ruby member.rb


$ruby member.rb
Masahiro
Terumi
Shinsuke
Yuki
Kohei
Nozomi

オプションを指定せずに実行した場合は何も出力されないが、"-d"オプションを指定すると、$DEBUGがtrueとなり "if $DEBUG" 内の処理を行う。




テーマ : プログラミング
ジャンル : コンピュータ

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。