SE-1 の回答履歴
![](https://gazo.okwave.jp/okwave/images/contents/av_nophoto_100_6.gif)
- ファイルからのデータ読み込みとデータ処理
ActivePerlをインストールしたばかりの初心者です。 ファイルからデータを読み、データ処理をするプログラムをつくっている所ですが 、データファイルの読み込み後の処理がうまくいきません。 データ処理では、空白文字、マイナスの符号も含めて3個ずつで一つの数値とします。 $a ='-10 -1 0 22177'; @foo = split( /(\s\s\d|\s\d\d|\d{3}|-\d{2}|\s-\d{1})/, $a) ; print "@foo\n"; 【出力結果】 -10 -1 0 22 177 ファイルから1行ずつデータを読み込み、同様の処理を行う以下のプログラムですが、正しくファイルが表示された後は止まってしまいます。 どこで躓いているのかご教示下さい。 #プログラム $no = 1; while ($line = <>) { print $no, "\t", $line; print $line; ++$no; } while ($line = <>) { @foo = split( /(\s\s\d|\s\d\d|\d{3}|-\d{2}|\s-\d{1})/, $a) ; print "@foo\n"; }
- あるファイルないから日付指定して検索その日付の行のものを別のファイルに保存
data.txtというファイルがあります。下記のような感じです。 2005/12/01,0:40:55,7.8 2005/12/02,0:41:55,7.8 2005/12/03,0:42:55,7.8 2005/12/04,0:43:55,7.3 2005/12/05,0:44:55,7.3 2005/12/06,0:45:55,7.8 2005/12/07,0:46:55,7.8 2005/12/08,0:47:55,7.8 ・ ・ です。 たとえばこの中から検索値(yyyy/mm/dd)2005/12/01を含む行から2005/12/04を含む行の間すべてを読み出してsend.txtというファイルに保存する方法を教えてください。 検索値が2005/12/01と2005/12/06だとするとsend.txtは下記のようになります。 2005/12/01,0:40:55,7.8 2005/12/02,0:41:55,7.8 2005/12/03,0:42:55,7.8 2005/12/04,0:43:55,7.3 2005/12/05,0:44:55,7.3 2005/12/06,0:45:55,7.8 検索値の変数は前が$nameで後が$name2です。
- 閉じタグの置換方法
お世話になっております。 @usable_A = qw(太 斜 …); @usable_B = ('SPAN class=B','SPAN class=I' …); と設定して、フォームからの入力データ ●<太><斜>かにみそ</斜></太> を ●<SPAN class=B><SPAN class=I>かにみそ</SPAN></SPAN> と変換してログに入れるようにしました。 このデータを編集する際、フォーム内での表示を ●<太><斜>かにみそ</斜></太> に戻したいのですが、</SPAN>を</斜></太>にするにはどのようにすれば良いのでしょうか。 宜しくお願い致します。
- ベストアンサー
- Perl
- pantonenezu
- 回答数5
- perlの文字列操作について
perlを下記のことをしたいのですが教えていただけないでしょうか? 若しくは、こういったことのできるスクリプトの参考になるページを教えてください。 確か、perlではハッシュというものを使うことでとても効率的にこれをする方法があったと思うのですが、配列まではなんとかぎりぎり分かったのですがハッシュまでは手が回っていません。 何卒、宜しくお願い致します。 ---log.txt-- http://www.1.com/ http://www.2.com/ http://www.3.com/ http://www.1.com/ http://www.2.com/ http://www.3.com/ http://www.3.com/ http://www.1.com/ ----------- log.txtを解析して、 3>http://www.3.com/ 3>http://www.1.com/ 2>http://www.2.com/
- ベストアンサー
- Perl
- ayu_mi_nic
- 回答数4
- ファイルの内容をスカラー変数に入れるには?
ファイルの内容をスカラー変数に入れる標準的な書き方ってありますでしょうか? a b c のような内容のtemp.txtの中身を$contentに $content="a\nb\nc\n"; のように代入したく、以下のようにしたのですが、もっとすっきり書けないものかな?と思いまして。それともこんなもんでしょうか?ご教授いただけると嬉しいです。 my $content; open (IN, "temp.txt"); while (<IN>){ $content.=$_; } close (IN);
- ベストアンサー
- Perl
- HoComeCome
- 回答数2
- __DATA__の再利用
こんばんは、皆さん。 以下のプログラムは1回しか__DATA__を読み込まないですが、 2回めのprintで__DATA__を表示させるにはどうしたらよいのでしょうか? ------------------------------------------------------ #!/usr/bin/perl $str = "DATA"; $aaa = &test($str); print $aaa; sub test($){ $instr = @_[0]; foreach (<$instr>){ print; } foreach (<$instr>){ print; } } __DATA__ 1 2 3 ------------------------------------------------------
- ベストアンサー
- Perl
- noname#17299
- 回答数5
- __DATA__の再利用
こんばんは、皆さん。 以下のプログラムは1回しか__DATA__を読み込まないですが、 2回めのprintで__DATA__を表示させるにはどうしたらよいのでしょうか? ------------------------------------------------------ #!/usr/bin/perl $str = "DATA"; $aaa = &test($str); print $aaa; sub test($){ $instr = @_[0]; foreach (<$instr>){ print; } foreach (<$instr>){ print; } } __DATA__ 1 2 3 ------------------------------------------------------
- ベストアンサー
- Perl
- noname#17299
- 回答数5
- __DATA__の再利用
こんばんは、皆さん。 以下のプログラムは1回しか__DATA__を読み込まないですが、 2回めのprintで__DATA__を表示させるにはどうしたらよいのでしょうか? ------------------------------------------------------ #!/usr/bin/perl $str = "DATA"; $aaa = &test($str); print $aaa; sub test($){ $instr = @_[0]; foreach (<$instr>){ print; } foreach (<$instr>){ print; } } __DATA__ 1 2 3 ------------------------------------------------------
- ベストアンサー
- Perl
- noname#17299
- 回答数5
- ファイルから検索条件を読み込んでGREPを実行したい
INPUTファイルを以下のように作成します。 >input.txt aaa bbb ccc ・ ・ ・ 特定のディレクトリの複数ファイルに対して grepを順にaaa,bbb,ccc・・・ というようにinput.txtから読み込んで実行し、結果をそれぞれaaa.txt,bbb.txt,ccc.txt・・・ へ出力したいのですが、方法がわからなくて困っています。 どなたかご教授お願いいたします。
- perlかベクターなどのフリーウェアでこれはできますか?
1.txt abc def ghi jkl mno pqr stu 2.txt mno abc 123 900 456 def stu qqq プログラム 1.txtと2.txtを比べて、1.txtに無い文字を3.txtへ書き出す。 3.txt 123 456 900 qqq Excelなら分割して何度かソートとIFを使えば解決できなくも無いのですが、今回は、行数が100万行を超えているため現実問題として無理です。 そこで、perlで行いたいのですがどのようにすればできますか? 良い方法が思いつきません。。。 どなたか、教えていただけないでしょうか? もしくは、これを解決するためのフリーウェアなどあればとても、助かります。 宜しくお願い致します。
- ベストアンサー
- Perl
- ayaka19801201
- 回答数4
- 正確に日本語にマッチさせるには??
aからzまでの半角小文字と、あ~ん までの平仮名のいずれか一文字にマッチさせたいのですが、うまくいきません。 /[a-zあ]/ とすると、なぜか「い」や「わ」などの、他の平仮名にもマッチしてしまいます。 どのように書けば正確にマッチさせることが出来るでしょうか??分かる方いらっしゃったらよろしくお願いします。
- ベストアンサー
- Perl
- fortunefeeling
- 回答数2
- Perlの戻り値について
配列の戻り値が理解できていないのですが、 Perlで正しく動作させるためには どのように記述したら良いのでしょうか? 戻り値の動作を詳しく書いてある(出来れば図入りで) 本はありますか? 例) sub a { my @a = ('A'); return (@a, "B", 2); } my (@a, $b, $c) = &a; print "a=[@a] b=[$b] c=[$c]\n"; # a=[A] b=[B] c=[2] # これを期待していたが # a=[A B 2] b=[] c=[] # こちらになる
- 8進数文字列を10進数の数値にする方法
文字列の数値を10進数に変換したいのですが、 頭に0が付くと8進数扱いでエラーになります。 簡単に変換する方法はありますか? my $a = "09"; my $b = int($a); <-- エラー また、8進数は頭に0ですが 2進数はどんな表記方法でしょうか?
- 8進数文字列を10進数の数値にする方法
文字列の数値を10進数に変換したいのですが、 頭に0が付くと8進数扱いでエラーになります。 簡単に変換する方法はありますか? my $a = "09"; my $b = int($a); <-- エラー また、8進数は頭に0ですが 2進数はどんな表記方法でしょうか?
- Perlの戻り値について
配列の戻り値が理解できていないのですが、 Perlで正しく動作させるためには どのように記述したら良いのでしょうか? 戻り値の動作を詳しく書いてある(出来れば図入りで) 本はありますか? 例) sub a { my @a = ('A'); return (@a, "B", 2); } my (@a, $b, $c) = &a; print "a=[@a] b=[$b] c=[$c]\n"; # a=[A] b=[B] c=[2] # これを期待していたが # a=[A B 2] b=[] c=[] # こちらになる