グッドデザイン賞を受賞したウォーターサーバー >>

perlで一行を一定の文字数で出力させるにはなにか、良い方法はありませんでしょうか?
なお、文字の途中で折り返すのではなく、単語(配列の一単語)単位で処理させたいと思っています。

[プログラム例]
#! /usr/bin/perl
@list = ("a", "bb", "ccc", "dddd", "eeeee", "ffffff");
{
local $, = ", ";
print @list;
}

[出力]
a, bb, ccc, dddd, eeeee, ffffff

[望む出力]
a, bb, ccc,
dddd, eeeee,
ffffff

※ printする前にlengthでバイト数を調べて、折り返すかどうかの判断をしないとだめなのでしょうか?

A 回答 (1件)

formatではダメですか?



#!/usr/bin/perl
my @list = ("a", "bb", "ccc", "dddd", "eeeee", "ffffff");
my $text = join(', ', @list);<
format STDOUT =<
~~^<<<<<<<<<<<
$text
.
write;

参考URL:http://www.rfs.jp/sb/perl/02/11.html
    • good
    • 0
この回答へのお礼

有難うございました。ばっちりです。色々調べてみたエッセンス:

^<<< : 表示できなかったときにスカラ文字列をchopして保持
~~ : repeat line until all fields are exhausted
の組み合わせ。
@listは a, bb, ccc, .... と空白で区切ることで単語として認識させる。

お礼日時:2010/03/11 22:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング