68user's page 掲示板

Prev< No. 2106〜2110> Next  [最新発言に戻る] [過去ログ一覧]
No. 2106 # ten 2001/08/20 (月) 18:16:34
Solaris 2.6 で、Sun Workshop 4.2 を使用しています。
事情により境界整列を全く行なわせない指定をしたいので、

$ cc -flags
(snip)
>-misalign 境界整列していないデータのロード/ストアを可能にするコードを生成

を指定しているのですが、意図した様な動作が得られません。
また、
>#program align foo, var
と指定してもダメです。

どうすれば良いのか御存知の方、いらっしゃいますか?

No. 2107 # 68user 2001/08/21 (火) 10:13:44
>>2106 ten
>#program align foo, var
とりあえず program じゃなくて pragma でしょう。あと、試して
ませんが書き方が怪しいのではないかと思います。こちらを参考に。
    http://docs.sun.com/htmlcoll/coll.674.1/euc-jp/CUG/accOptions.html#1407

>>2105 ふくし
> また、RTF の規格についてわかりやすく書いているリンクなども、、。
Rich Text Format は Microsoft が作った規格なので、Microsoft に
仕様書が存在するはずなのですが、見付けられませんでした。もしかしたら
今は別の団体が管理しているのかもしれません。

No. 2108 # CCIE [E-mail] 2001/08/24 (金) 14:53:30
こんちは、お初です。最近Perlはじめました。
ほかの言語はからっきし使えません(TT関西弁ならいけるけど。。。
で、Perlのプログラミングで質問させてもらいます。
テキストファイルで、↓こういうかんじ

        name  age  year
--------------------------
    CCIE   22   2001

みたいな感じのテキストがあって、そこから3行目だけを出力させたいのと
この場合だと22だけを取り出したいっていう2つのことがどうすれば
いいか今格闘中です。
たぶん正規表現かなーっとおもって
オライリーの正規表現見てますがさっぱりで・・・(^^;)
どなたか助言よろしくお願いしますm(__)m

No. 2109 # 68user 2001/08/24 (金) 20:43:26
>>2108 CCIE
> 3行目だけを出力させたい
自分で何行読んだかを数えます。
    $line = 1;
    open(IN, "file");
    while (<IN>){
        if ( $line == 3 ){
            print "これが 3行目の内容です: $_";
        }
        $line++;
    }

> 22だけを取り出したい
$_ に "CCIE 22 2001\n" が入っている状態で、
    ($name, $age, $year) = split(/\s+/, $_);
とすれば $age に '22' が入ります。

\s は空白・タブを表し、\s+ は1文字以上連続した空白・タブを表しますので、
      $_ を1文字以上連続した空白・タブで分割し、それぞれのフィールドを
      $name、$age、$year に代入
という意味になります。

あるいは
    ($name, $age, $year) =~ m/^(.*)\s+(\d+)\s+(\d+)$/;
という方法もあります。^ は行頭、\d は数字、$ は行末を表し、
括弧でくくった部分がそれぞれ $name、$age、$year に代入されます。

No. 2110 # /tk 2001/08/25 (土) 01:04:46
>>2109 68user
> ($name, $age, $year) =~ m/^(.*)\s+(\d+)\s+(\d+)$/;
余計なような足りないような…

      ($name, $age, $year) = m/^(.*)\s+(\d+)\s+(\d+)$/;
若しくは
      ($name, $age, $year) = $_ =~ m/^(.*)\s+(\d+)\s+(\d+)$/;
では無いでしょうか?

Prev< No. 2106〜2110> Next  [最新発言に戻る] [過去ログ一覧]