|
説明不足で申し訳ありませんでした。 org.datというファイルがあるとします あと、tencd.txtというテキストファイルがあり、その中身は 000420000101 002320001010 034320001020 とします この場合、 org.datをコピーしてorg004.dat、org0023.dat、org0343.dat という3つの複製ファイルを作成したいのです。 tencd.txtは何レコードあるかは不定です。 因みにHP-UXのバージョンはB.10.20でした。 よろしくお願いします |
|
What do you mean? hahaha... |
|
sh なら exec < tencd.txt while read line do set -- $line num=`echo $line | sed 's/^\(....\).*/\1/'` cp org.dat org$num.dat done csh なら foreach line (`cat tencd.txt`) set num=`echo $line | cut -c-4` cp org.dat org$num.dat end てな感じでしょうか。 # シェルスクリプトと言っても、シェルにはいろいろ種類が # あるので、sh か csh かそれ以外かを明記してください。 先頭4バイト取得には、sed でも cut でも awk でも お好きな方法をどうぞ。 もちろん全体を awk スクリプトで書くこともできます。 でもまぁ、perl を覚えた方がよいとは思いますね。 |
|
すいません、Perl一般の話ですいませんが、 サブルーチン リファレンスを使うとコールバック関数が作れる、 という場合の、コールバック関数ってどんなもんなんでしょうか? どんなときにどう使うと便利なんでしょうか? リファレンスの勉強をしていて、そこだけピンと来る例題のある章が なくて困っています。 御無理のない範囲で教えてくださいー。 |
|
Perl/Tk で何かアクションがあったときの動作を記述する関数 sub pushed { print "ボタンが押されました\n"; } $top->Button( -text => 'Push me', -command => \&pushed, )->pack(-side => 'left'); とか、シグナルハンドラ、たとえば SIGALRM による タイムアウトが起こったときの動作を記述する関数 sub signal_handler { print "1秒待ちましたが、入力がありませんでした\n"; alarm(1); } $SIG{ALRM}=\&signal_handler; alarm(1); $buf = <STDIN>; などをコールバック関数といいます。 後者は、より実践的に書けば http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=889 てな感じです。 なお、関数へのリファレンスを使わず、$SIG{ALRM}=sub {...} などと 無名関数を使ってコールバックを設定することもできます。 |
|
ありがとうございます。このふたつの例はわかりました。 他に、ユーザープログラムが呼び出すサブルーチンを 「コールバック」と呼ぶことはないんでしょうか。 「コールバック」という言葉じたいの定義が本によってあやふやな気がして、、。 たびたび申し訳ありません、、。 |