- ベストアンサー
perlにおけるファイルコピー方法
ファイルのコピー関数が見当たらなかったのですが、どのようにすべきでしょうか? perlで関数が用意されているのであれば、 system("cp ..."); の様に、システム関数は余り使いたくないと思っています。
- tk_1980024
- お礼率37% (148/393)
- Perl
- 回答数2
- ありがとう数8
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
標準モジュールの File::Copy に、copy と move という関数があります。 use File::Copy; copy("from_file", "to_file"); 引数にはファイルパス(ファイル名)だけでなく、ファイルハンドルも指定できます。 詳しくは参考URLをご覧ください。
その他の回答 (1)
関数というのは用意されてないので、いつもは俺は下記のを使ってます。 コピペでまんま使えると思います。 sub cp { local(@tmpfile); if ( open(IN , "<$_[0]") == undef ) { return; } if ( open(OUT, ">$_[1]") == undef ) { close(IN); return; } binmode(IN); binmode(OUT); @tmpfile = <IN>; print OUT @tmpfile; close(IN); close(OUT); } sub mv { cp( $_[0], $_[1] ); unlink($_[0]); }
お礼
お礼遅れましてすみませんでした。leaz024さんが教えてくれたように関数が用意されているようなので、今回はこちらを使用しようと思います。 どうも有難うございました。
関連するQ&A
- Perlで2GBを超える大きいファイルのファイルサイズを取得する方法ないですか?
OS:WindowsXP SP2(ファイルシステムはNTFS) Perl:5.6.1 Perlで4GB以上のファイルに対して、一定の処理を行いたいのですが、 ファイルサイズを正しく取得することができません。 ファイルテストの-sを使う方法とstat関数を使う方法を試しましたが、 どちらも結果は同じで、取得した数値は正しいものではありません。 尚、同様の環境で2GB(正確な境界はわからないが大体このくらい) 以下のファイルであれば正しいファイルサイズをとることができます。 また、以下のような別の環境で試したところ、2GBを超えている ファイルでも問題なくファイルサイズを取得することができました。 OS:WindowsVista Perl:5.8.8 できれば、原因と解決法の両方を教えてもらいたいです。 そして、可能な限りPerlのみで解決したく、それもなるべく軽い処理で 行いたいです。 よろしくお願いします。
- 締切済み
- Perl
- cgi(perl使用)でファイルを作る方法を教えてください
こんにちは、 perlをやっています。 プロバイダ上にperlスクリプトを拡張子cgiでUPしています。 いまやりたいことがあるんです、それは ファイルをサーバ上の領域に作るというものです (ちなみにサーバの種類はUNIX系です) ファイルはゼロバイトの何も無いテキストファイルを作りたいんですが どのような関数を使えばファイルができるのでしょうか。 また、ファイルを作った後パーミッションの変更(chmodコマンドのような 動き)をする関数等があれば教えてください。
- ベストアンサー
- Perl
- ファイルのコピーについて
RHEL6で、ファイルをコピーする際に以下の2通りのコマンドがあります。 --------------------- #x.txt ファイル内容の出力結果をy.txt に出力 cat x.txt > y.txt #x.txt ファイルをy.txt としてコピーする cp x.txt y.txt --------------------- 前者と後者では、効率的にはどちらも同じでしょうか。 cat(もしくはcp )を使う方がよいという場合、その理由を教えていただけますか。 お願いします。
- ベストアンサー
- Linux系OS
- Perlでリモートコピー
こんにちは、よろしくお願いします。 Perlでファイルをリモートコピーしたいのですが、、、 UNIXの「rcp」を使用してみたのですがエラーとなってしまいました。 $cmd = '/bin/rcp'; system("${cmd} -p test.txt server1:/home/data/"); Tera Term上でプログラムしているのですが、ターム上ではエラーなく正常にコピー処理が行えます。 実行ユーザーも同じです。 # rcp -p test.txt server1:/home/data/ 何かよい方法、もしくは上記解決策等ありますでしょうか? サーバー・・・HP-UX CGI開発言語・・・Perl5 開発端末・・・windows2000(Tera Term 使用) 以上、ご教授の程よろしくお願いいたします。
- 締切済み
- Perl
- PerlでExcelのワークシートを同じファイル内にコピーしたりワーク
PerlでExcelのワークシートを同じファイル内にコピーしたりワークシートの名前を変更することは可能でしょうか? 環境は、WindowsXPpro、IIS5.1、PerlV5.10でWin32_OLEモジュールを使用しています PerlでExcelのワークシート内セルに書き込み・セルからの読み出しはできています。 VBAではワークシートをコピーする場合は、 「Worksheets("Sheet1").Copy After:=Worksheets("Sheet3")」 でコピーできるようですが、 Perlではどう記述すれば良いか分かりません。 Perlではワークシートをコピーしたりワークシートの名前を変更することは出来ないのでしょうか? よろしくお願いします。
- ベストアンサー
- Perl
- バッチでファイルのコピーを行いたい
バッチを利用してファイルのコピーを実施しようとしておりまあす あるフォルダ内にあるファイルをすべて別のフォルダに移動したいのですが、 このとき、 ・コピー対象のファイルは、MAXで11ファイル(cpfile1.csv-cpfile11.csv)ですが、すべて存在するとは限らない ・コピーに失敗したファイルは、あと2回コピーのリトライをする (MAX3回コピーを実施する) ・途中でコピーが失敗したファイルがあったとしても、フォルダ内のすべてのファイルに対してコピーを行う copy /Y c:A\cp_from\*.csv c:A\cp_to\*.csv で行おうとしたのですがこの場合、2回のリトライを行う方法が不明でした for文を利用して行うべきなのでしょうか? またその時にはどのように書けばよいのでしょうか> お分かりになられる方がおりましたら、ご教授お願いいたします
- ベストアンサー
- その他(プログラミング・開発)
- PerlとPHPで同一ファイルをファイルロック
PerlとPHPで同一のファイルを読み書きする必要があるのですが、ファイルロックする機構を作るには互いの言語でmkdirで対応したほうがよいのでしょうか? flock関数がPerlにもPHPにもありますが、これは、PHPのプロセスで実行したロックの状態をPerlで検知したり、または逆のことはできないのでしょうか? もしできないとするとmkdirで同一の機構を作ったほうが良い気もしますが、何か問題などは起きないでしょうか。
- ベストアンサー
- PHP
- Perlで添付ファイルを返信する方法を教えてください
perlでメールを返信するシステムを作成しているのですが 添付ファイルを指定できてかつコメント付でsendmailを使って メール返信する方法を知っていたら教えてください
- ベストアンサー
- Perl
- ディレクトリ以下の全ファイルのコピー
/src/ディレクトリにあるすべてのファイルやサブディレクトリを/dest/ディレクトリにコピーしたいと思っています。 ただ、次のコマンドでは/src/.dotfileといったドットファイルはコピーされません。 $ cp -Rf /src/* /dest/ このようなドットファイルも含めてすべてのファイル、サブディレクトリをコピーするにはどのようにするのがよいのでしょうか? 次のような方法が思い浮かびましたが、もっとシンプル or スマートな方法がありましたら教えてください。 (a)シェルオプションのdotglobを一時的にONにしてから、上記cpコマンドを実行する。 (b)/src/直下のドットファイルだけ別途指定する。 $ cp -Rf /src/{*,.[^.]*} /dest/
- ベストアンサー
- Linux系OS
- Perlでファイルを移動させる命令はあるのでしょうか?
Perlでファイルを移動させる命令はあるのでしょうか? systemなど使わずに、UNIXのmvコマンドのような物です。
- ベストアンサー
- Perl
お礼
お礼遅くなり失礼しました。 どうも有難うございます。mkdirやrm(unilnk)などはモジュールを呼ばなくても関数が用意されているのに対してcopyだけはモジュールを呼ばなくてはならないのはちょっと不思議ですが、このモジュールがある事は覚えておきます。