• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:perl超初心的な質問)

perl超初心的な質問

このQ&Aのポイント
  • perl初心者が辞書ファイルを編集する際に困っています。
  • perlを使って編集したい文の上書きがうまくいきません。
  • 助けを求めています。どなたか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

> 行の最初の”を削り、読んだものに上書きしたいのです。 ってことなら、書き換えたいファイルをa.txtとして、コマンドラインから、 perl -i.bak -pe "s/^.//" a.txt ――と実行してみるとか(各行の最初の1文字を強制的に削ります)。

参考URL:
http://perldoc.jp/docs/perl/5.10.0/perlrun.pod
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ファイルの読み書きで初歩的質問

    perl超初心者で、初歩的な質問です。 辞書データから不必要な文字を取ろうと思っています。 ところが最初のファイルの入出力から行き詰っています。 処理が終わると空ファイルができます。 下が使いたい辞書データです。 ------------------- word,trans,exp,level,memory,modify,pron,filelink "さらさら","(adj-na,adv,n,vs) (1) rustling/murmuring/(2) fluently/(3) silky (hair)/(P)","",0,0,0,"" "さらば","(conj,int) farewell","",0,0,0,"" "さん","(suf) Mr or Mrs/(P)","",0,0,0,"" "さーたーあんだぎー","(n) type of Okinawan doughnut (donut)","",0,0,0,"" "さ来週 [さらいしゅう]","(n-adv,n-t) week after next","",0,0,0,"" "さ迷う [さまよう]","(v5u) to loiter/to putter/to prowl/to wander about/to roam about/to knock around","",0,0,0,"" "ざあざあ","(adv) sound of rushing water/sound of pouring rain/white noise sound/(P)","",0,0,0,"" ------------------- そして下が組んだものです。 use encoding "cp932"; $/ = "\r\n"; open(DIC, "< dicdata.csv") or die "$!"; while(<DIC>){ } close (DIC); if($a =~ /&quop/){ $a =~ s/&quop//g; } open(DIC, "> dicdata.csv") or die "$!"; close (DIC); -------------- なにとぞお願いします。

    • ベストアンサー
    • Perl
  • perlで超素朴な質問

    超初心者です。 辞書から不必要な文字を消そうをしていますが、はじめのファイルを読み出すから 行き詰っています。 下が使いたい辞書データです。 ------------ word,trans,exp,level,memory,modify,pron,filelink "さまざまな理由から [さまざまなりゆうから]","(exp) for various reasons","",0,0,0,"" "さめざめ","(adv) sorrowfully/anguishedly","",0,0,0,"" "さもしい","(adj) selfish/self-seeking/self-interested/mean","",0,0,0,"" "さようならホームラン","(n) game-ending home run (baseball)","",0,0,0,"" "さよならホームラン","(n) game-ending home run (baseball)","",0,0,0,"" "さらけ出す [さらけだす]","(v5s) to expose/to disclose/to lay bare/to confess","",0,0,0,"" "さらさら","(adj-na,adv,n,vs) (1) rustling/murmuring/(2) fluently/(3) silky (hair)/(P)","",0,0,0,"" "さらば","(conj,int) farewell","",0,0,0,"" "さん","(suf) Mr or Mrs/(P)","",0,0,0,"" "さーたーあんだぎー","(n) type of Okinawan doughnut (donut)","",0,0,0,"" "さ来週 [さらいしゅう]","(n-adv,n-t) week after next","",0,0,0,"" "さ迷う [さまよう]","(v5u) to loiter/to putter/to prowl/to wander about/to roam about/to knock around","",0,0,0,"" "ざあざあ","(adv) sound of rushing water/sound of pouring rain/white noise sound/(P)","",0,0,0,"" "ざあっ","(n) (onom) sound of water","",0,0,0,"" "ざくざく","(adj-na,adv) lots of coins or jewels/cutting up roughly/mixing gravel/walking on frost","",0,0,0,"" "ざけんなよ","(exp) (X) (vulg) fuck you!/""don't fuck around""/""don't be a screw off""","",0,0,0,"" "ざっくざっく","(adv) crunch crunch/thud thud/tramp tramp","",0,0,0,"" "ざっくばらん","(adj-na,n) frankness","",0,0,0,"" "ざっと","(adv) roughly/in round numbers/(P)","",0,0,0,"" "ざぶんと","(adv) with a splash","",0,0,0,"" ------------------ そして組んだのがこれです。 use encoding "cp932"; $/ = "\r\n"; open(DIC, "+> DicData.csv") or die("Error:$!"); while(<DIC>){ $data = $_; } if($a =~ /&quot/){ $a =~ s/&quot//g; } close(DIC); ----------- お恥ずかしい限りです。 なにとぞよろしくお願いします。

  • 初心者が超初歩的な質問です

    perlで初歩的な質問です。 辞書ファイルで編集していたら必要以外な文字が多くて自力で削っていたら大変なので、perlでしてみました。 参考資料を見ながら一応打ったのですが、どうもうまくいきません。 実は、最初のファイル入出力のところです。 open(DIC,"> $inputfile"); 初期化されて空ファイルになる open(DIC,"< $inputfile"); とすると画面には表示されるが処理が進まない。 下が打った文です。 $inputfile="DicIn.csv"; open(DIC,"+> $inputfile") or die "$!"; while (<DIC>){ @array = <DIC>; @Array = (@Array1,@Array2); $a1 = ~ s/"//g; $a2 = ~ s|///|---|g; print(DIC); } close(DIC) 本当に初歩的ですみません 困ってます、よろしくお願いします

  • Perl 教えてください。

    下記のような簡単なスクリプトなんですが、なぜかサーバーにアップすると動きません。 ローカルでコマンドプロンプトから直接実行するとまともに動作します。 パーミッションは「755」と「705」でやってみましたが。 perlのパスは合っていますし、実際同じ場所に置いた他のCGIは動作します。 #!/usr/bin/perl open (DT, "<./data/***/***.csv") or die "File '***.csv' Open Error."; @data = <DT>; $data[0] = ",,,,,,\n"; open (OUT,">./data/***/***1.csv") or die "File '***1.csv' Open Error."; print OUT @data; close (DT); close (OUT); 原因が分からず困っています。 解決策でなく、原因と思えるだけの回答で結構ですので何卒よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • perlの書き方

    現在、windowsでwebサーバ構築しています。iisを使用しています。 その中で、perlを使用して、送信ボタンを押すとメールを配信するものを作成しています。 $to='******@******.co.jp'; if(open(ML,"○○○○○○")){ print ML "From: $email \n"; print ML "To: $to \n"; print ML "Bcc: $bcc \n"; print ML "Content-type: text/plain;\n"; この○○には、何といれたらいいのでしょうか? また単純な質問で申しないのですが、先頭部分は、 #!C:\Perl\bin\perl.exe でいいのでしょうか?

    • ベストアンサー
    • Perl
  • perl初心者です。宜しくお願い致します。

    ファイルの容量が大きく。perlを使用してデータの集計をしています。 "A"がきたらflag1をたてなさい。 "B"がきたらflag2をたてなさい。 "C"がきたらflag3をたてなさい。 これでAとBとCを抜き取ること&AからCまでの時間を取得したのですが、 Bの数のmaxの値だけを抜き取りたいのですが、Bがきたときの数をすべて 出力してしまいます。下記の文だと、Bが4回きたら、1,2,3,4と出力してしまいます。 それで4だけを出力したいのですがどのように書き換えたらようか教えて頂けますでしょうか。 '----------------------------------------------------------------------------- open (IN,"< $ARGV[0].txt") or die; open (OUT,"> $ARGV[0]_out.txt") or die; $flag =0; my $a, $b, $c; $count = 0; ####################################################### while($line =<IN>){ ($time,$data) = split(/\s+/,$line); if($data eq "A") { $flag=1; $a = $time; #print OUT $line; #print OUT "\n"; } elsif($data eq "B"){ $flag=2; $count++; $count == $data; print OUT ("$count\n") } #print OUT ("$count\n"); elsif($data eq "C"){ $flag=0; $count=0; $b = $time; $c = $b - $a; print OUT ("time $c\n") } } -------------------------------------------------------------------------------

  • perlで辞書データを置換

    perl超初心者です。 初めて組んで行き詰りました。 辞書データから不必要なものを取ろうと 思いましたが、いきなり[ファイルを開く] で止まってます。 以下がそうです。 use utf8; binmode STDIN, ":encoding(cp932)"; binmode STDOUT, ":encoding(cp932)"; open(DIC, "+<", "pdic2csv.csv") or die("Error:$!"); @array = <DIC>; $a = ~ s|" / "|"_"|g; @array = ("\,","\\","\s",1,2,3); $a = ~ s/1,2,3/"_"/g; $a = ~ s|" /// "|"\,"|g; close(DIC) ----------------- 使う辞書データは以下です。 うつる /// 건너다 / [綴り]ㄱㅓㄴㄴㅓㄷㅏ うつわ /// 그릇 / 그릇は,(~)杯, \ cf. 잔 うで /// 팔 よろしくお願いします。

  • perlでcsvファイルから複数行を抽出したい

    プログラミング初心者です。 お知恵をお貸しください。 perlでcsvファイルから任意の複数行を、コマンドライン引数を使って抜き出したいです。 1行だけだとうまくいきますが、以下ではすべてのcsvデータが出力されてしまいます。 ----------------------getcsv.pl ここから---------------------- #!/usr/bin/perl -- use strict; use warnings; open(IN, "<adata.csv"); open (OUT, ">$bdata.csv"); while(<IN>){ if($. == $ARGV[0] || $ARGV[1] || $ARGV[2] || $ARGV[3]) { print OUT $_; } } close(IN); close (OUT); ----------------------getcsv.pl ここまで---------------------- ----------------------コマンド ここから---------------------- perl getcsv.pl 1 3 8 10 ----------------------コマンド ここまで---------------------- よろしくお願いします。

    • ベストアンサー
    • Perl
  • perlでCSV形式ファイルのアップロード

    本日、同じ質問をしたものです。 前回の問題は解決したのですが、ファイルがアップロードできないで悩んでします。 CGIのプログラムは以下のソースです。 #! c:/perl/bin/perl use CGI; # CGIヘッダーの出力 print "Content-type: text/html\n\n"; my ($query,$fileName); $query = new CGI; $fileName = $query->param('fileName'); open(OUT, ">./a.csv"); binmode(OUT); while(read($fileName,$buffer,1024)) { print OUT $buffer; } close(OUT); close($fileName); #ファイルハンドルをcloseしています。 exit ; ファイルは、作られるのですが、中身が書き込まれません。 どなたか教えてください。 お願いします。

    • ベストアンサー
    • Perl
  • perlで容量の大きいCSVファイルを開く方法

    perlで容量の大きいCSVファイルを開く方法 ファイル容量の大きいcsvファイルから、必要な項目を抜き出して別ファイルにするプログラムを作成したいと思ってます。 csvファイルが少ない場合は動作したのですが、容量が140MBを超えたデータを読み込もうとすると、ブラウザー表示で何も変化いたしません プログラムは以下のようになってます。 ------------------------------------------------- 略 open(IN,"$inport") || &error(" $inport を読み込みopen出来ません"); flock(IN,1); @lines = <IN>; foreach $lines (@lines) { local(@val) = split("\,", $lines); print "$val[0]"; $dat .= "$val[1]\,$val[5]\n"; } open(OUT,">$dcsv"); flock(OUT,2); print OUT "$dat"; close OUT; 略 ------------------------------------------------- 件数も多いので、foreachを$lines (@lines) としないで($start .. $end)として読み込みの件数を制限して対応しようと考えてましたが、うまくいきませんでした。 ご指導いただけますと幸いです。

    • ベストアンサー
    • Perl