まず、プログラミングっていうのは『こう書けばいい』というものではありません。
簡単に言えば、「現実世界のシミュレーション」です。
そのロジック(論理)を記述するのです。
なので、いったんRubyが~とかを置いといて、『現実世界でならどうするか』を考えてみてください。
[言い換え]
あるメモがある。そのメモの一番上の行だけ削除して更新しろ。ただし、最終的なメモはそのメモ用紙でなくても構わないとする。
[例1]
1test@test.jp
2test@test.jp
3test@test.jp
4test@test.jp
↓
2test@test.jp
3test@test.jp
4test@test.jp
的な依頼かなんかだと考えてみてください。
私なら、最初のメモ用紙を メモ1 とします。そして別の似たような用紙を取り出してこれを メモ2 とします。さらにメモ1を見ながら、このメモ2に書いていく。
まずは "1test@test.jp" ですが、一番上にあるので書かない。
次に "2test@test.jp" ですが、これは二番目にあるのでメモ2に書く。
次に "3test@test.jp" ですが、これも三番目、つまり二番目以降なので書く。
...
と書いていき、最終行を書き終わると、もう メモ2 が最終的なメモになります。
これをやるだけです。
つまり、Rubyとかのようなプログラミング言語であれば、
1. 対象のファイルを開く
2. (暫定的な)書き込み先ファイルを開く
3. (1)のファイルが「これ以上ないぞ」と言うまでループ
3.1. もし現在の行が一行目でないなら
3.1.1. (2)のファイルに書き込む
的な処理になるはずです。
元のファイルに書き込みたいのであれば、
4. 元のファイルを削除する
5. 暫定的なファイルを元のファイル名に変える
的な処理もつければいけるはずです。
つまり、
別のファイルに書き込む -> 元のファイルを削除 -> 暫定的なファイルをリネーム
という感じでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。