C言語 文字列の宣言・代入
2005-04-19-5 / カテゴリ: [programming][c] / [permlink]

(charへのポインタで)
char *str;
str = "hoge";
このとき、strcpy(str, "hoge"); はできない。
ポインタが指しているアドレスが不定の場合に文字列をセットできないから…かな

(charの配列で)
char str[32];
strcpy(str, "hoge");
このとき、str = "hoge"; はできない。
str は配列名であって変数でないから…らしい
ただし、
char str[32] = "hoge";
は OK

C言語 配列とポインタの関係
2005-04-19-4 / カテゴリ: [programming][c] / [permlink]

int a[4] = {1, 2, 3, 4};
for (i = 0; i < 4; i++) {
	printf("&a[%d]: %p\n", i, &a[i]);   /* 各要素のアドレスを print */
}
printf("a: %p\n", a);                 /* 配列名をポインタとして print */
出力
&a[0]: 0x22efb0
&a[1]: 0x22efb4
&a[2]: 0x22efb8
&a[3]: 0x22efbc
a: 0x22efb0p
配列名は、その配列の先頭要素のアドレスを指している

MIME::Parser インスタンス設定 output_to_core
2005-01-14-1 / カテゴリ: [programming][perl] / [permlink]

1をセットすると、parseデータをメモリ上に保持する。デフォルトでは解析結果
のうちbody部(本文やマルチパートの添付ファイル)は即時ディスクに書き出し。
(perldoc では、巨大ファイルが添付された場合などでちょっとriskyとさ)

Perl で必要なときだけモジュールをロードする
2004-11-16-1 / カテゴリ: [programming][perl] / [permlink]

http://sasao.fusetsu.org/memo/perl.txt
sub func {
  require Path::Module;
  import Path::Module;
}
perl 5.005 でも OK

Spreadsheet::ParseExcelでExcelの操作
2004-11-11-2 / カテゴリ: [programming][perl] / [permlink]

OLE::Storage_Lite が必要
Unicode::Map も必要ぽい

IPaddr の計算用モジュール
2004-11-01-3 / カテゴリ: [network][programming][perl] / [permlink]

http://search.cpan.org/~luismunoz/NetAddr-IP-3.21/
use NetAddr::IP ;
 
my $ip = new NetAddr::IP "192.168.175.4/255.255.255.128" ;
 
print "The address is ", $ip->addr, " with mask ", $ip->mask, "\n" ;
print "nw    is ", $ip->network,     "\n" ;
print "bc    is ", $ip->broadcast,   "\n" ;
print "range is ", $ip->range,       "\n" ;
print "first is ", $ip->first->addr, "\n" ;
print "last  is ", $ip->last->addr,  "\n" ;
print "mask  is ", $ip->masklen,     "\n" ;
print "num   is ", $ip->num,         "\n" ;
便利!

use CGI での未定義
2004-10-07-1 / カテゴリ: [programming][perl][CGI] / [permlink]

my $hoge = $query->param('hoge');
で取得した場合、
?hoge=xx
は当然 xx
?hoge=
は空文字(defined)
なにもなければ
undef
になる

forkした子プロセスをwaitしない(見殺しにした)ときの defunct 抑制
2004-08-01-1 / カテゴリ: [programming][perl] / [permlink]

$SIG{CHLD} = 'IGNORE';
でよい
親プロセスは fork した子プロセスは完全にシカトするようになる。

Perl の open でコマンド実行
2004-07-14-1 / カテゴリ: [programming][perl] / [permlink]

open(F, "| cat");
print F "hogehoge\n";
close(F);

これで、"print hogehoge\n"をcatにパイプする

Getopt::Long で同一オプションを複数回もちいて配列に
2004-07-11-1 / カテゴリ: [programming][perl] / [permlink]

GetOptions("option:s" => \@array);
んで、
$ ./prog.pl --option foo --option bar --option baz
でもって
@array に ("foo", "bar", "baz") がはいる

5.005 で、glob の対象が多すぎるとでるアレ
2004-06-24-1 / カテゴリ: [programming][perl] / [permlink]

miyazaki@nwmail:~/work$ cat -n pick.pl
     1  #!/usr/bin/perl
     2
     3  @list = <imail/queue/deferred/SMTP-Deliver/*/*/*/*-Control>;
     4
     5  print "hoge\n";
miyazaki@nwmail:~/work$ ./pick.pl
glob failed (child exited with status 1) at ./pick.pl line 3.
hoge
miyazaki@nwmail:~/work$ /usr/bin/csh
nwmail:~/work% echo imail/queue/deferred/SMTP-Deliver/*/*/*/*-Control
引数が長すぎます。
nwmail:~/work% echo $status
1
nwmail:~/work% setenv LANG C
nwmail:~/work% echo imail/queue/deferred/SMTP-Deliver/*/*/*/*-Control
Arguments too long
nwmail:~/work% echo $status
1
nwmail:~/work% /usr/local/bin/tcsh
nwmail:~% echo imail/queue/deferred/SMTP-Deliver/*/*/*/*-Control
^C
nwmail:~% echo imail/queue/deferred/SMTP-Deliver/*/*/*/*-Control | wc -l
     1
nwmail:~% echo imail/queue/deferred/SMTP-Deliver/*/*/*/*-Control | more
imail/queue/deferred/SMTP-Deliver/0/aaa0example.org/0/22518.9208984375-Control ...
(1行で出力されるよん)

ソースから見て相対的なパスのモジュールを常にロード
2004-06-21-4 / カテゴリ: [programming][perl] / [permlink]

use FindBin qw($Bin);
use lib $Bin;

ファイルテスト演算子 -M -A -C
2004-06-21-3 / カテゴリ: [programming][perl] / [permlink]

ファイルの更新/参照/inode変更時刻とプログラム実行時間の差の日数を返す
time と stat[*] の差を 60*60*24 で割った値と同じ、かな

unix find 相当モジュール File::Find
2004-06-21-2 / カテゴリ: [programming][perl] / [permlink]

SYNOPSIS: find サブルーチンのリファレンス, ディレクトリ

(例1) 実行ファイル(-x)をprint
use File::Find;
find(\&wanted, $dir);
sub wanted {
  print "$File::Find::name\n" if -x $_;
}

(例2) 配列に入れる
use File::Find;
find(sub { push @files, $File::Find::name if -f }, $dir);

文字コード
2004-06-17-2 / カテゴリ: [programming][perl] / [permlink]

perl -ne 'foreach (split(//)) { printf("0x%X\n", ord $_) }' < jis.txt
テキストファイル jis.txt を1バイトずつ文字コードを16進で表記する。

glob によるファイルリスト取得
2004-06-10-1 / カテゴリ: [programming][perl] / [permlink]

5.002 だと、"!" とかのシェル上で扱う場合にエスケープが必要なものは、
perl でもエスケープが必要
@list = glob <\\!*>;
5.6 系だと要らないみたい。

ファイルの参照時刻・更新時刻を変更する: utime
2004-05-21-2 / カテゴリ: [programming][perl] / [permlink]

utime atime_epoch, ctime_epoch, @filelist;

Perl で tail -f と同じことをさせる
2004-05-11-1 / カテゴリ: [programming][perl] / [permlink]

http://www.att.or.jp/perl/faq/faq5j.html#5-22
#!/usr/bin/perl
open(FILE, $ARGV[0]);
for (;;) {
  for ($curpos = tell(FILE); $_ = <FILE>; $curpos = tell(FILE)) {
    print;
  }
  select undef, undef, undef, 0.5;
  seek(FILE, $curpos, 0);
}
0.5sec の sleep は、まぁ好みで。ただし、sleep が入っていないとすさまじい
負荷になるので注意(笑)
File::Tail 使うよりラクかも。

Net::Telnetモジュールのエラーハンドリング
2004-04-23-1 / カテゴリ: [programming][network][perl] / [permlink]

login()の失敗などは、デフォルトで 'die' を行っているため、他の処理を行い
たい(ログファイルにイベントを出力して終了とか)場合は、ErrMode を変更す
る必要がある。
(A) new する際に、Errmode を指定する
$a = Net::Telnet->new(Timeout => 10, Errmode => "return");
(B) new した後に、Errmode を変更する。
$a->errmode("return");
以上で、
$return = $telnet->login('user', 'pass');
が失敗した際は、$return は undef になる。(成功時はErrmodeに関係なく1)

cygwin/Perl localtime で GMT の値が返ってくる
2004-04-13-2 / カテゴリ: [win][cygwin][programming][perl] / [permlink]

localtime 実行前に、
use POSIX 'tzset';
tzset();
を行っておく。
http://www.cygwin.com/ml/cygwin/2004-03/msg00866.html
カテゴリ: programming / 前ページ 1 2 3 4 5 6 7 次ページ

最終更新時間: 2013-05-02 16:12