Rubyでファイル名に入っている数値をインクリメントするスクリプトを作成

久々にRubyの勉強です。
今回はファイル名に入っている数値に1を足して、別ファイルとして保存するスクリプトです。

【条件】
1,ファイル名は*.JPG、数値は3桁&固定位置に数値がある

#!/opt/local/bin/ruby
#
# ファイル名に入っている数値をインクリメントする
#

# フォルダ中のJPGファイルに対して処理を行う
Dir::glob( Dir::pwd + "/*.JPG" ).each {|f|
# 初期化
back = [] # ファイル名退避用

dir, file = File::split( "#{f}" ) # ディレクトリとファイル名を分ける
# 旧ファイル名退避
back << file.dup # 参照渡ししない

i = file[4..6].to_i + 1 # 数文字を取得→数値に変換→1を足す
file[4..6] = i.to_s.rjust(3, "0") # 3桁に戻して文字列にする
# 新ファイル名退避
back << file.dup

# ファイルコピー
File.rename( back[0], "exchange/" + back[1] )
}


今回は参照渡しでつまずいてしまいました。
Rubyの場合はC言語でいうアドレス渡しになるのですね。
勉強になりました。

# ####
# ### At Bat Web Studio 出水ベースのWeb屋
# ## サイバーまめカン ストックメディア
# #