grepを使う
sub search_item_in_list {
my ($item, $ra_list) = @_;
if (grep {$item eq $_} @{$ra_list}) {
return 1;
} else {
return 0;
}
}
2012年5月18日金曜日
Perlで重複要素を省いたリストを作る
下記のような実装が綺麗かも
sub merge_dup {
my @input_list = @_ == 1 ? @{$_[0]} : @_;
my @output_list = keys %{{map{$_=>1}@input_list}};
return wantarray ? @output_list : [@output_list];
}
▼流れ
・@input_listを
配列要素=>1,
の形式のハッシュにする
↓
・それを{}で囲んでハッシュレフに変換する
↓
・さらにそれを%{}で囲んでデリファレンスする
↓
・得られたハッシュのkeyのみを取り出せば重複なしリストの出来上がり
sub merge_dup {
my @input_list = @_ == 1 ? @{$_[0]} : @_;
my @output_list = keys %{{map{$_=>1}@input_list}};
return wantarray ? @output_list : [@output_list];
}
▼流れ
・@input_listを
配列要素=>1,
の形式のハッシュにする
↓
・それを{}で囲んでハッシュレフに変換する
↓
・さらにそれを%{}で囲んでデリファレンスする
↓
・得られたハッシュのkeyのみを取り出せば重複なしリストの出来上がり
2012年5月12日土曜日
CPANからモジュールを落とす初期設定
http://www.fuji.sakura.ne.jp/~yada/talk2000/perl.shtml
まだうまくいっていないのでとりあえずのメモの段階。
まだうまくいっていないのでとりあえずのメモの段階。
# which lynx /usr/bin/lynx # export ftp_proxy=http://proxy.you.com:8000/ # export http_proxy=http://proxy.you.com:8000/
# perl -MCPAN -e shell
で後はyesだのエンターだの後は流れでお願いします。
最終的にdone_testingも使えないTest::Moreをアップグレードしたいのだが、
cpanのupgradeコマンドすら使えない・・
perl -MCPAN -e 'CPAN::Shell->install( CPAN::Shell->r)'をやっても
Can't access URL ftp://ftp.jaist.ac.jp/pub/lang/CPAN/authors/id/R/RU/RURBAN/Opcodes-0.11.tar.gz.
でこのモジュールのせいで更新もできない・・
Linux(CentOS)にパスを通す方法
http://d.hatena.ne.jp/Akineko/20090825/1251187210
exportコマンドで環境変数をエクスポートする。PATHに関しては
PATH=$PATH:通したいパス
のように$PATHの後に通したいパスを記載するようにしないと
既存のパスが通らなくなってしまうので注意。
ログアウトしても同様の状態を維持したい(永続化する)場合は下記の方法を使う
・特定ユーザーのみに設定
ホームディレクトリにある.bash_profileの最終行に
export PATH=$PATH:通したいパス
を記載して保存。その後
source .bash_profile
を実行して設定を反映
・全ユーザーに設定
/etc/profileの最終行に
export PATH=$PATH:通したいパス
を記載して保存。その後
source /etc/profile
を実行して設定を反映
▼具体例
http://memopct.blogspot.jp/2012/05/susu.html
で記載した一般ユーザーでifconfigコマンドが使えない問題の解決をする
・まずは/etc/profileの末尾にexport PATH=$PATH:/sbinを書き加えて保存
[root@localhost ~]# vim /etc/profile
・まだ上記設定が反映されていないので一般ユーザーのPATHに/sbinはなし
[guest@localhost ~]$ env | grep PATH
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/guest/bin
↓
・source /etc/profileでファイル設定を再読み込みするとPATHに/sbinが加わっていることがわかる
[guest@localhost ~]$ source /etc/profile
[guest@localhost ~]$ env | grep PATH
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/guest/bin:/sbin
exportコマンドで環境変数をエクスポートする。PATHに関しては
PATH=$PATH:通したいパス
のように$PATHの後に通したいパスを記載するようにしないと
既存のパスが通らなくなってしまうので注意。
例: /usr/local/scala/bin にパスを通す場合 $ export PATH=$PATH:/usr/local/scala/bin
ログアウトしても同様の状態を維持したい(永続化する)場合は下記の方法を使う
・特定ユーザーのみに設定
ホームディレクトリにある.bash_profileの最終行に
export PATH=$PATH:通したいパス
を記載して保存。その後
source .bash_profile
を実行して設定を反映
・全ユーザーに設定
/etc/profileの最終行に
export PATH=$PATH:通したいパス
を記載して保存。その後
source /etc/profile
を実行して設定を反映
▼具体例
http://memopct.blogspot.jp/2012/05/susu.html
で記載した一般ユーザーでifconfigコマンドが使えない問題の解決をする
・まずは/etc/profileの末尾にexport PATH=$PATH:/sbinを書き加えて保存
[root@localhost ~]# vim /etc/profile
-------------------------------------------
54 fi
55 done
56
57 unset i
58 unset pathmunge
59 export PATH=$PATH:/sbin
-------------------------------------------
↓・まだ上記設定が反映されていないので一般ユーザーのPATHに/sbinはなし
[guest@localhost ~]$ env | grep PATH
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/guest/bin
↓
・source /etc/profileでファイル設定を再読み込みするとPATHに/sbinが加わっていることがわかる
[guest@localhost ~]$ source /etc/profile
[guest@localhost ~]$ env | grep PATH
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/guest/bin:/sbin
suとsu - の違い
http://www.obenri.com/_command/su01.html
su の後に "-(ハイフン)" をつけた場合と付けない場合の違いは、 su コマンド実行前のユーザーアカウントの操作環境(使用する シェル の種類や 環境変数 、 ホームディレクトリ など)をそのまま "root" に引き継ぐか、それとも "root" に設定されている操作環境を用いるか、という違いがあります。
具体的には
su
だとホームディレクトリやPATHなどの環境変数が変更前のユーザーの設定のままだが
su -
だとrootのホームディレクトリになり、PATHなどの環境変数もrootのものが設定される。
▼具体例
・CentOSでifconfigコマンドが使えない
[root@localhost ~]# which ifconfig
/sbin/ifconfig
ifconfigとコマンドを打ってもコマンドが通らないのは一般ユーザーは/sbin/にデフォルトで
パスが通っていないため。
[guest@localhost ~]$ env | grep PATH
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/guest/bin
[guest@localhost ~]$ su
パスワード:
[root@localhost guest]# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/guest/bin
su の後に "-(ハイフン)" をつけた場合と付けない場合の違いは、 su コマンド実行前のユーザーアカウントの操作環境(使用する シェル の種類や 環境変数 、 ホームディレクトリ など)をそのまま "root" に引き継ぐか、それとも "root" に設定されている操作環境を用いるか、という違いがあります。
具体的には
su
だとホームディレクトリやPATHなどの環境変数が変更前のユーザーの設定のままだが
su -
だとrootのホームディレクトリになり、PATHなどの環境変数もrootのものが設定される。
▼具体例
・CentOSでifconfigコマンドが使えない
[root@localhost ~]# which ifconfig
/sbin/ifconfig
ifconfigとコマンドを打ってもコマンドが通らないのは一般ユーザーは/sbin/にデフォルトで
パスが通っていないため。
[guest@localhost ~]$ env | grep PATH
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/guest/bin
下記のようにsuでは環境変数が一般ユーザーのものと同一なためifconfigのパスが通っていない
[guest@localhost ~]$ su
パスワード:
[root@localhost guest]# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/guest/bin
[root@localhost guest]# ifconfig
bash: ifconfig: command not found
su -ならrootの環境変数がセットされるため、ifconfigのパスが通っている
[guest@localhost ~]$ su -
パスワード:
[root@localhost ~]# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr **:**:**:**:**:**
inet addr:192.168.1.* Bcast:192.168.1.255 Mask:255.255.255.0
登録:
投稿 (Atom)