• ベストアンサー

書いた文章を改行など含めて文字列として変数に代入するには?

あいうえお かきくけこ さしすせそ を変数に文字列として代入したいのですが、 my $string = "あいうえお\nかきくけこ\nさしすせそ\n"; などと改行文字を自分で入れたりといったことをせず、 変数に文字列として代入する方法を教えてください。 print <<END; あいうえお かきくけこ さしすせそ END という方法があるのは分かったのですが。。。

  • Perl
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

my $string = <<END; あいうえお かきくけこ さしすせそ END こんな感じで代入可能です。 念のため、補足します。 <<END; は <<"END"; と同じ扱いで、変数が展開されます。 下記の二つを比べてみて下さい。 my $myValue = "hogehoge"; my $string1 = <<'END'; あいうえお $myValue かきくけこ さしすせそ END print $string1; my $string2 = <<"END"; あいうえお $myValue かきくけこ さしすせそ END print $string2; さらに補足ですが、ご存知かも知れませんが、 プログラム中で、日本語を扱う場合は、 Shift-JIS と Perl の相性が悪いので注意が必要です。 (プログラムがEUCコードなら問題ありません。) 下記は、Shift-JISの場合、文字化けします。 (最後の「ソ」が文字化けします) my $string = <<END; アイウエオ カキクケコ サシスセソ END print $string; <<'END'; を使う方が無難です。 詳しくは下記など参考に。 http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm

gle_gle
質問者

お礼

ご回答ありがとうございます。 うまくいきました。 また補足説明も大変参考になりました。 ありがとうございました。

その他の回答 (1)

  • t-okura
  • ベストアンサー率75% (253/335)
回答No.2

my $string =<<END; あいうえお かきくけこ さしすせそ END ですか ? my $string = "あいうえお かきくけこ さしすせそ"; でもできますよ。

参考URL:
http://allabout.co.jp/internet/cgiperl/closeup/CU20041125A/index2.htm
gle_gle
質問者

お礼

参考URL、ありがとうございました。

関連するQ&A

  • 変数に改行を含む文字列を代入

    変数に改行を含む文字列を代入したいです。 具体的には echo $KAIGYO AA BB CC DD となるような $KAIGYOを作りたいです。 どのようにしたらよいでしょうか?

  • String型の変数に代入されている2つの文字列を論理演算したいです。

    String型の変数に代入されている2つの文字列を論理演算したいです。 上記の通りなんですけど 例えば String a = "あいうえお"; String b = "aiueo"; このような二つの文字列を論理演算したあと 16進数の文字列としてあらたな変数(String型)に代入したいのですが どのように記述すればよろしいでしょうか? 初心者なものでわかりやすく説明していただけるとありがたいです。

    • ベストアンサー
    • Java
  • 置換した文字列を変数に代入する方法

    お世話になります。 たとえば、 #!C:\Perl\bin\perl print $form->header("text/html");  : open(IN,"<file.txt"); while(<IN>){ : : s/あい(.*?)うえお/$1/; (????)←「$1」の内容を変数に代入したい : : } close(IN); というように、テキストファイルの文章中の 「あい(.*?)うえお」から(.*?)を取り出して、 その取り出した(.*?)を変数に代入したいのですが、 いろいろ試してやっているのですが、難儀して おります。どのように書いたらいいか教えてください。よろしくお願いします。 最終的にclose(IN);のあとで、print 変数;として(.*?)の文字列を表示させたいです。

    • ベストアンサー
    • Perl
  • C# 文字列を改行コードで分割

    C# 文字列を改行コードで分割 テキストボックスに記載された文字列を1行ごとに取り出そうと思い string[] strs = textBox1.Text.Split('\n'); とコーディングしたら、末尾に\rがついてしまいました。 末尾の\rを削除するコードを追加して書けばよいのですが、改行コード\r\nで分割する方法ありましたらお教えください。

  • 文字列型変数に1024を超えた文字列を代入した時に

    VBでOracleDBに対してoo4oでクエリーを発行する際、 1024を超える文字列になってしまいました。 実際テストしようとした時、エラーになってしまうので調査したところ、 1024文字を越えた時点で自動的に改行?が入ってしまいクエリーが変なところで切れてしまいます。 何か対応する方法はありますか? ちなみに文字列変数を2・3作成し、後で1つにまとめると言うこともやってみたんですが、結果が同じで。。。

  • fputで出力した文字列を改行するには?

    PHP初心者です。 いくつかの文字列変数をテキストファイルに書き出す処理を行いたいのですが、うまく動作してくれません。 文字列変数 $str_a, $str_b, $str_cをカンマで区切ってテキスト1行でファイルに書き出しています。 $str = $str_a . ',' . $str_b . ',' . $str_c . '\\r\\n'; fputs($fp, $str); 上の2行がループで数回呼ばれた後、ファイルをクローズしているのですが、実際に作成されたテキストファイルを見ると a1,b1,c1\r\na2,b2,c2\r\n....みたいに改行が入らず"\r\n"という文字列があるだけです。希望しているのは a1,b1,c1 <-ここで改行 a2,b2,c2 <-ここも改行 という結果なのですが.... よろしくご教授お願いいたします。

    • ベストアンサー
    • PHP
  • 複数行に渡る文字列の置換

    こんにちは、Perl初心者です(プログラミング全般の初心者です)。 カレントフォルダ内のテキストファイルに対して、文字列置換をするスクリプトを書こうとしています。具体的には、以下のようにストリングIDの直下に改行のみの場合(ストリングがない)は、[BLANK]という文字列を挿入したいと思っています。 TEXT_STRING_ID_001<改行> <改行> <改行> TEXT_STRING_ID_002<改行> 入門書やこのサイトの皆さまのお力を借りて、なんとか以下のようなリストを書きエラーなく置換処理ができるところまでは確認できました。 しかし、この方法だと結局1行ずつ処理していることになるので、「s/\n{3}/\n[en]\n/gm」のような置換ができません(mオプションをつけてもダメなようです)。 この問題を解決する良い方法はないものでしょうか。 (もしかすると、処理の仕方を根本から変えないといけないのでしょうか) 以下、現状のリスト: use strict; use warnings; my $dirname = '.'; opendir(DIR, $dirname) or die "$dirname: $!"; while (my $dir = readdir(DIR)) { next unless (-f $dir); next unless ($dir =~ /\.txt$/); print $dir, "\n"; open(FILE, $dir) or die "$dir: $!"; my @file = <FILE>; close(FILE); foreach my $line (@file) { $line =~ s/\n{3}/\n[BLANK]\n/gm; } open(NEWFILE, "> $dir") or die "$dir: $!"; print NEWFILE @file; close(NEWFILE); } closedir(DIR);

    • ベストアンサー
    • Perl
  • 【VB】文字列操作についてお願いします。

    お世話になっております。 VB2005です。 ある文字列の最後の行の改行を取りたいのですが、何かよい方法はありますでしょうか。 あいうえお かきくけこ さしすせそ とあったら、"さしすせそ"のあとの改行をすべて取りたいのです。 よろしくお願いします。≦(._.)≧ ペコ

  • tcshでの改行の処理について教えてください。

    tcshでの改行の処理について教えてください。 tcshでawkを使っているのですが、 %awk 'BEGIN{n=0}\ {n++}\ END{print n}' というようにしか入力できません。 shでは、普通に awk 'BEGIN{n=0} {n++} END {print n}' でできますよね。 コマンドに渡すコマンド列の扱いが異なったのはどのような理由なのでしょうか? これを回避するよい方法があれば教えてください。

  • JAVAのアプレットの文の改行方法。

    JAVAのアプレットにてstringにて変数を宣言し、そこに文字列を代入します。 その後initメソッド内でその変数を呼び出したら、代入した文字列が出ます。 文字列を改行を行いたいのですが、文字列に\nをはさんでも改行されません。 改行するにはどのようにしたら良いでしょうか。 具体的にはこのような感じです。 [javaファイル] import java.applet.*; import java.awt.*; public class mozi extends Applet{ private Label AA; private String moziretsu = "こんにちは\nこんばんは"; public void init(){ add(AA = new Label(moziretsu)); } } [htmlファイル] <html> <head><title>mozi</title></head> <body> <applet code="mozi" codebase="." width="700" height="240"> </applet> </body> </html>

    • ベストアンサー
    • Java

専門家に質問してみよう