![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
$ cat data.txt
#No1.
abc...
#No2.
def...
#No3.
ghi...
#No4.
jkl...
#No5.
mno...
なるデータの、例えば#No2.から#No4.までのデータだけをダンプするのに、
open(IN,"data.txt");
my $flag=0;
while(<IN>){
if ( $_ =~ /#No2./ && $flag == 0) { $flag=1; }
if ( $_ =~ /#No5./ && $flag == 1) { $flag=0; }
print if $flag==1;
}
close(IN)
と書いてみましたが、もっと簡単に書く方法を以前見たことがあったように思うのですが、こう書けばよいのでは?というアイディアがあれば、ご教授いただけないでしょうか?
No.1ベストアンサー
- 回答日時:
少なくとも
if (/#No2./ && $flag == 0) { $flag = 1; }
if (/#No5./ && $flag == 1) { $flag = 0; }
は
$flag = 1 if /#No2./;
$flag = 0 if /#No5./;
にできますね. あと, #No5 を出力していいなら while の中身を
print if /#No2./ .. /#No5./;
で置き換えることもできます.
while (<IN>) {
push(@lines, $_) if /#No2./ .. /#No5./;
}
print @lines[0 .. ($#lines-1)];
のように配列にして逃げることもできる... かな.
>あと, #No5 を出力していいなら while の中身を
print if /#No2./ .. /#No5./;
で置き換えることもできます.
御回答ありがとうございます。
私の記憶にあったものはたしか、これです。
No.3
- 回答日時:
ANo.1の方の
$flag = 1 if /#No2./;
$flag = 0 if /#No5./;
の記述は、更に短くして
$flag ^=1 if /#No2\.|#No5\./;
という風にできますね。
$flag ^=1 if /#No2\.|#No5\./;
のような書き方は初めて見ました。
参考になりました。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのDjangoでHTML内で変数を利用したいです 3 2022/05/15 15:33
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/07/13 12:31
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- UNIX・Linux Linuxの実行結果を修正したいです。 2 2022/11/23 08:32
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C++でのテキストファイル読み込...
-
テキストファイルの各行を配列...
-
資格試験に向け、ipodで見れる...
-
ファイルの内容をスカラー変数...
-
「パスが見つかりません」とい...
-
[perl] もっとシンプルに改良、...
-
一行だけ読込
-
今、「Python 3.8 32-bit」を使っ...
-
1件だけ表示させる方法
-
特定文字のついたレコードを改行
-
<>で区切られたdatファイルをエ...
-
あるファイルないから日付指定...
-
どこがおかしいですか?教えて...
-
VBAで巨大なファイルの途中から...
-
エクセルVBA コードが同じでも...
-
dos変数の%~dp0は powershellで...
-
read() on unopened filehandle...
-
バッチファイルの作り方(CSV→...
-
awkスクリプトでダブルクォーテ...
-
ExcelをCSV書き出す場合のシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル名を複数個配列で確保...
-
一行だけ読込
-
Pythonでegrep機能をつかいたい
-
ifstream/ofstream について
-
「パスが見つかりません」とい...
-
shellのコマンド deffの差分の...
-
Perl エラーログを指定の場所...
-
MATLABでカーブフィットしたデ...
-
ifstream を利用した1行分のテ...
-
perlでCSVをソートする方法につ...
-
system関数と引数について
-
C++でのテキストファイル読み込...
-
連番のファイルを何個も開きたい
-
[perl] もっとシンプルに改良、...
-
Perl 重複カウント 上位3名
-
Pythonで非日本語のUnicode文字...
-
Pythonでテキストを行数指定し...
-
while文がうまく動かない
-
Fortranで1行飛ばして読み込む方法
-
あるファイルないから日付指定...
おすすめ情報