Perlコーディング初心者質問スレ Part 39
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/11/27 11:35:03ID:DJwiGeFM【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0514508
04/12/28 11:18:22ID:/d0b1jT1jcode.plでもできるようです^^;
アホなことをしてしまいました。
しかしどうやってるのでしょうか?
>1文字目の2バイト目が\xA3で、2文字目の1バイト目が\xB0-\xB9である組み合わせには
>完全に誤作動してしまいます。
これをどうやってクリアにしたのか気になってjcode.plのtrの中身を
見てみましたが・・・・・・・orz
字句解析でもしてるんだろうか
0516512
04/12/28 12:11:25ID:t9GmHYc3> >>512
> foreach ('aa' .. 'zz'){
> $list[$count++] = $_;
> }
今、それとほぼ同じコードなんだけど、676個も要素をメモリに読み込んでるから軽く出来る方法はないかとカキコしますた
0517nobodyさん
04/12/28 13:22:09ID:???掲示板のCGIで半角カナを使用するために半角カナが使用できるjcode.plを入れたのですが、
どうやら掲示板のCGIの方でも改変すべき箇所があるみたいです。
jcode::convert(\$value,$gl->{mycode});
if ($gl->{mycode} eq 'sjis') {jcode::h2z_sjis(\$value); }
if ($gl->{mycode} eq 'euc') {jcode::h2z_euc(\$value); }
か
jcode::convert(\$message,'jis');
あたりだと思うのですが半角カナ→全角カナへのコンバートをしないようにするためにはどうすればいいのでしょうか
0518nobodyさん
04/12/28 14:48:39ID:???hankaku to zenkaku の意味
0519nobodyさん
04/12/28 14:58:26ID:???0520nobodyさん
04/12/28 16:02:26ID:???jisコードには半角カナが無いので、jisコードに変換した時点でアウト
0523nobodyさん
04/12/28 16:31:52ID:???それだったらJISへ変換は当然として、そこは半角にはできないな。
いずれにしても改造スレのほうが適切じゃないか?
0524nobodyさん
04/12/28 18:23:28ID:???0526nobodyさん
04/12/28 20:08:29ID:???$var1='あかさたなはまやらわ';
$var2='亜加差多菜羽真矢裸和';
この二つの変数を使って
s/あ/亜/g;
s/か/加/g;
s/さ/差/g;
…
みたいな置換をしたいのですがグルっても分かりませんでした。どういう処理をすれば良いんでしょうか。
0527517
04/12/28 21:20:58ID:???レスありがとうございました。
良く考えたら半角→全角変換しないでいいのならjcode.pl自体使う必要がないので、
cgi中からjcode.plを抜き取ればいいだけでした。
0528nobodyさん
04/12/28 21:36:42ID:???my @key = ('a'..'z');
my $keynum = scalar @key;
# my $d = 675;
my $code = $key[$d/$keynum].$key[$d%$keynum];
# 繰り返し使うなら、配列の方が負荷は軽いと思う。
>>526
文字コードとPerlバーションを書くべし。
>>527
JISコードへのコンバートはしなくていいの?
0531nobodyさん
04/12/28 23:30:38ID:???微妙だね。
String::Multibyteを使ったもの。
use String::Multibyte;
my $mbcs = String::Multibyte->new("shiftjis");
my $var1='あかさたなはまやらわ';
my $var2='亜加差多菜羽真矢裸和';
print $mbcs->strtr('あめんぼ あかいな あいうえお', $var1, $var2);
0532531
04/12/28 23:32:16ID:???require 'jcode.pl';
my $var1='あかさたなはまやらわ';
my $var2='亜加差多菜羽真矢裸和';
my $tr = sjis_tr($var1, $var2);
print $tr->('あめんぼ あかいな あいうえお');
exit;
sub sjis_tr
{
my ($from, $to) = @_;
jcode::euc(\$from, "sjis");
jcode::euc(\$to, "sjis");
return(
sub {
my $line = shift;
jcode::tr(\$line, $from, $to);
return($line);
});
}
--
encodingを使ったもの。
use encoding "shiftjis";
my $str = 'あめんぼ あかいな あいうえお';
$str =~ tr/あかさたなはまやらわ/亜加差多菜羽真矢裸和/;
print $str;
0533531
04/12/28 23:38:14ID:???my $var1='あかさたなはまやらわ';
my $var2='亜加差多菜羽真矢裸和';
my $tr = sjis_tr($var1, $var2);
print $tr->('あめんぼ あかいな あいうえお');
exit;
sub sjis_tr
{
my ($from, $to) = @_;
my $sjis = '[\x00-\x7e]|[\x0x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]|[\xa1-\xdf]';
my %keys;
my @key_code = ($from =~ /($sjis)/g);
@keys{@key_code} = ($to =~ /($sjis)/g);
my $key = '('. join('|', map{ quotemeta($_) } @key_code). ')';
my $pattern = qr/\G((?:$sjis)*?)$key/;
return(
sub{
(my $str = shift) =~ s/$pattern/$1$keys{$2}/g;
return $str;
});
}
0534531
04/12/29 00:18:35ID:???sub sjis_tr
{
my ($from, $to) = @_;
jcode::convert(\$from, "euc", "sjis");
jcode::convert(\$to, "euc", "sjis");
return(
sub {
return jcode::sjis(jcode::trans(
jcode::euc(shift(), "sjis"), $from, $to), "euc");
});
}
0537nobodyさん
05/01/03 03:52:58ID:BvOHark/例えば
@foo = qw(1 2 3 4 5 6);
という配列があったら
1:2 3 4 5 6
2:1 3 4 5 6
3:1 2 4 5 6
4:1 2 3 5 6
・・・
というように取り出したい。
foreachとifを使って地道にやらないとだめかなぁ
0539nobodyさん
05/01/03 04:17:37ID:Jw9YIMiU今作成中のアクセス解析でshift_jisで出力した際
検索文字列に上のような文字化けが出るんですが、
これ元がどの言語コードが分かりますでしょうか?
漢字 \ x アルファベット 数字
という規則的な並び方してるのですが、
お分かりの方いたらご教授お願いしますm(__)m
0540nobodyさん
05/01/03 04:35:28ID:???俺だったら、おとなしくforeachを使うと思う。
少し考えてみて、いい方法があったら、後で書き込みます。
>>538
それだと、配列中に要らない値が重複して存在する場合、
その値に対応する要素が複数削除されるぞ。
0541nobodyさん
05/01/03 04:44:00ID:???>それだと、配列中に要らない値が重複して存在する場合、
>その値に対応する要素が複数削除されるぞ。
元質問だといらない値以外が残ればいいんじゃないの?
0543540
05/01/03 05:39:41ID:???を使えば楽みたいね。今まで使った事なかった、鬱 orz
例(※検証してません):
@foo = qw(1 2 3 4 5 6);
splice(@foo, 1, 2);
print join(',',@foo) , "\n";
結果:
1,4,5,6
0544nobodyさん
05/01/03 06:08:27ID:???CPAN 経由でインストールしたモジュールをアンインストールするには
どうすればいいの??
0546nobodyさん
05/01/03 14:59:35ID:???0550540
05/01/03 16:01:28ID:???読んでるよ。
offsetとlengthは、537に合うように変えてくれれば良い。
その意図で543の様に書いたんだし。
ま、549の言う通りだな。
540の指摘が癇に障ったなら謝るわ。
0551nobodyさん
05/01/03 16:02:09ID:???>1:2 3 4 5 6
>2:1 3 4 5 6
>3:1 2 4 5 6
>4:1 2 3 5 6
これは表示結果なのか、あるいは1を任意の要素(の値)とすると
残りの要素(の値)である2 3 4 5 6を取り出したいのかわからんね。
まあ、>>537が再度書くまで放置するしかあるまい。
0552nobodyさん
05/01/03 16:02:10ID:???中身を見て、取り出すなら。('3'を取り出してみるとすると)
my @foo = qw(1 2 3 4 5 4 3 2);
my @found = grep{ not index($foo[$_], '3') }(0..$#foo);
defined $found[0] and splice(@foo, $found[0], 1);
# grepがちょっぴり優雅だから、普段はforeach回すかなぁ。
0553nobodyさん
05/01/03 16:21:47ID:???だったらそこまで複雑にしなくても>>543のように
splice(@foo, 2, 1); でいいのでは?
0554nobodyさん
05/01/03 16:24:24ID:???「@foo[2]の3だけ除かれる」
0555nobodyさん
05/01/03 17:05:07ID:???>>552は中身が'3'の最初のものを削除するんだけど、
'3'が常に$foo[2]にあるとは限らないとしたら?
または、配列に'3'が含まれていなかったら?
質問では、配列の内容は
> 例えば
だから実際は、
use List::Util qw(shuffle);
my @foo = shuffle (1..10);
なんて物かもしれないしね。
0556nobodyさん
05/01/03 17:15:15ID:???>'3'が常に$foo[2]にあるとは限らないとしたら?
>または、配列に'3'が含まれていなかったら?
全然影響しないでしょ。
>splice(@foo, 2, 1);
foo[2]を1個取り除くだけなんだから。
元質問が複数の要素を一度に取り除いたものを得たい、または
要素の中から任意の「値」を取り除いたものを得たいのなら別だけど。
0557nobodyさん
05/01/03 17:35:35ID:???> 中身を見て、取り出すなら。('3'を取り出してみるとすると)
> 中身が'3'の最初のものを削除するんだけど、
これは無視?
> 要素の中から任意の「値」を取り除いたものを得たいのなら別だけど。
別も何も、これをコード化したものですが。
>>549さんの
> というか元質問自体が曖昧なので、同じ値を削りたいのか
> n番目の値を削りたいのかどちらともとれるし。
という意見の"同じ値を〜"の方のコードを書いたまでです。
0558537
05/01/03 19:03:14ID:BvOHark/深夜に作業するもんじゃないですね。
n番目の値以外の要素を取り出したい、と言うのが真意でした。
#n番目の値以外を全て足し合わせると言うルーチンを作りたかった
#
#@foo = qw(1 2 3 4); という配列があったら
#$bar[0] = 2+3+4
#$bar[1] = 1+3+4
#$bar[2] = 1+2+4
#$bar[3] = 1+2+3
要素は重複する可能性があります。
#grepでそのままやるのは無理そう?
0559nobodyさん
05/01/03 19:39:41ID:BmWNnWLw例↓
open IN, "aaa.txt";
open(IN, "aaa.txt");
私の持っている本には、括弧が書いてある本と書いていない本が
あるのですが、括弧についての説明がなくてよく分かりません。
説明しているサイトも見つけられませんでした。
よろしくお願いします。
0560nobodyさん
05/01/03 20:13:20ID:1lDTWYQSほとんどの場合プログラマの意図したとおりに補ってくれるが、
ごく稀に、意図しないところに括弧を補って恐ろしい動作をしてくれることもある。
まあ演算子の優先順位を厳密に考えてれば防げることなんだが、
それよりは括弧を明示的に付ける方が楽ではある。
0561nobodyさん
05/01/03 21:21:18ID:???配列を壊していいならspliceで、壊したくなければ>>546の配列
スライスでいいんでない。要素の位置で指定する場合は配列を
そのままgrepでは無理です。どうしてもgrepつかいたけりゃ
0..$#fooでインデックスの配列作ってそっちにgrepする手はある
けど。
オーバーフローや浮動小数点の誤差を気にしなくていいのならば、
配列を加工しようとせずに全部の要素の和からn番目の要素の値を
引き算する方がいいかもね。
0562nobodyさん
05/01/03 21:30:46ID:???どこをブロックすればいいの?
正規表現で全部チェックすれば良いのかな。。。
あと、安全のためにブロックした方が良い文字ってある?
0563nobodyさん
05/01/03 21:37:14ID:???どの文字をブロックするか考えるより、何を通していいか考えて
それだけ通すようにした方がいいと思うよ。
あとは出力するときに過不足なくエスケープすること。
-Tフラグを使うとすこし安心かもね。汚染除去するときの正規
表現を適切なものにしないと意味ないけど。
0564559
05/01/03 22:38:42ID:???それじゃ、Perlでは括弧は常につけておいた方がいいということなんですね。
他の言語はVBしか知らないのでVBですみませんが、
VBだと関数の戻り値がある場合は括弧が必須で、
ない場合はどちらでもいいようです。
Perlでも何か違いがあるのかと思っていました。
どうもありがとうございました。
0565nobodyさん
05/01/04 01:14:24ID:WiFbXIfdPerlは変幻自在な妖怪みたいな言語
0566nobodyさん
05/01/04 02:41:43ID:???┏┓ ┏━━┓ /.,;彡;, ..,;,. ゙ミヽ、 ┏━━┓ ┏┓ ┏━┓
┏┛┗┓┃┏┓┃ /ソノ;彡;彡;彡;彡'゙ヽ;゙i;,ヽ ┃┏┓┃┏┛┗┓┃ ┃
┗┓┏┛┃┗┛┃┏━━━{i;゙|il|l!ノ彡';彡;'','⌒ ゙!l!l}i゙!━┓┃┃┃┃┃┏┓┃┃ ┃
┏┛┗┓┃┏┓┃┃ {ノl!|!;ソ;ノリノ'″Perlノ;li|l!1 ┃┃┃┃┃┗┛┃┃┃ ┃
┗┓┏┛┗┛┃┃┗━━━'{i|{il{li゙!ソ;' ` ' `"″!l}!i|!━┛┃┃┃┃ ┃┃┗━┛
┃┃ ┃┃ '{;l!|{i!リ'' _ノ ;i|!レ' ┃┗┛┃ ┏┛┃┏━┓
┗┛ ┗┛ '゙i!|!;'、,_´__,ノ '″ ┗━━┛ ┗━┛┗━┛
0567nobodyさん
05/01/04 18:05:38ID:???例えば、$mesに文字列「あああああ<p>あああいいい</p>いいうええええ」
が入っていたときに<p>から</p>までの間の「あああいいい」を取り出すにはどうしたら良いでしょうか?
よろしくお願いします(;´Д`)人
0568567
05/01/04 18:09:51ID:???0569nobodyさん
05/01/04 18:16:31ID:ufv1QlyO例えば、$mesに文字列「あああああ<p>あああいいい</p>いいうええええ」が入っていたときに
<p>から</p>までの間の「あああいいい」を編集して例えば「いいいううう」等にして
$mesが「あああああ<p>いいいあああ</p>いいうええええ」となるようにしたいのですが
どのようにしたら出来るでしょうか?
0570nobodyさん
05/01/04 18:27:37ID:???0571nobodyさん
05/01/04 18:47:37ID:???0572nobodyさん
05/01/04 19:20:58ID:???# <p>〜</p>までを抜き出す
$mes =~ m|^(.+)<p>(.+)</p>(.+)$|;
$before = $1;
$inside = $2;
$after = $3;
# 中身を書き換える
$inside = "いいいううう";
# つなげる
$mes = "$before<p>$inside</p>$after";
ってこと?
0573nobodyさん
05/01/04 19:27:40ID:???0574nobodyさん
05/01/04 23:16:36ID:Y/b3Mf5iUse strict;
を使って書いてるのですが、サブルーチンの中から複数の値を返したい時はどうすれば良いのでしょうか?
例えばですが、
sub a{
my $a = 1;
my $b = 2;
my $c = 3;
}
というサブルーチンがあったとして、$a, $b, $c, それぞれの値を参照したいという感じなんですが・・・・。
既に出たような質問だったらすみませんが、よろしくお願いいたします。
0575nobodyさん
05/01/04 23:21:43ID:???配列で返す
($a1,$b1,$c1) = a();
sub a {
my $a = 1;
my $b = 2;
my $c = 3;
return ($a, $b, $c);
}
既に何度も出ているような気はまあ確かにする
0576574
05/01/04 23:38:07ID:???早速レスして頂いてありがとうございます。
配列で返すとは思いつきませんでした。まだまだ知らないことだらけです(汗
教えて頂いたことを試してみます、どうもありがとうございました☆
0577574
05/01/05 00:13:08ID:???勢いでもう一つ質問してしまいますが、複数の配列を返したい場合はどうしたら良いでしょうか?(とりあえず同じように試したらダメでした)
調べてみた所、リファレンスを使って返すとあったのですが、それが最良の方法でしょうか? ↓こんな感じで・・・。
sub foo {
return \%hash, \@array;
}
いろいろ聞きまくってしまって申し訳ありませんが、よろしくお願いいたします。
0578nobodyさん
05/01/05 00:15:45ID:???13 <= $teens && $teens <= 19
という評価式はなんだか冗長なのでもっと見やすくすることはできませんか?
$teens == 13 .. 19 くらい簡単に書けてもいいような気はするのですが。
0579nobodyさん
05/01/05 01:25:20ID:???一緒くたにしたあと長さで分離する手もあるにはあるが
普通はリファレンス使うのが良いと思う
>>578
perl 6 になるとなんかその手の書き方ができるようになると聞いたが
今のところは我慢しる
0580nobodyさん
05/01/05 02:10:00ID:V9sS6I44現在9個の要素が入っている配列@arrayの0から4までの要素を
my ($a, $b, $c, $d)にいれて、コピーした要素を配列から消去
したいのですが、スマートな方法はありませんか。
my ($a, $b, $c, $d) = shift @array;感じとしてはこんな風に・・・
よろしくお願いします。
0581580
05/01/05 02:14:50ID:V9sS6I440582nobodyさん
05/01/05 02:16:38ID:???調べろ
sub a {
my %hash = ( a => 1, b => 2 );
my @array = ( "a", "b", "c" );
my $ref = [ \%hash, \@array ];
return $ref;
}
0583nobodyさん
05/01/05 02:18:17ID:elOzKoqYspliceを使えばよいかと。
こんな感じで。
splice(@array, 0, 4);
0584580
05/01/05 03:11:37ID:V9sS6I44なるほど、こんな便利な関数があったのですね。
ありがとうございました。
0585nobodyさん
05/01/05 03:37:03ID:???}
これって一つの条件式、あるはもっと簡単に出来ないでしょうか
0587nobodyさん
05/01/05 04:02:01ID:???すいませんでした。。&& thx;
0589nobodyさん
05/01/05 04:39:44ID:???0590nobodyさん
05/01/05 07:39:31ID:???# 1以下
if ($hoge - $foo <= 1) {
# 処理;
}
ただし、0.5とかも入っちゃうけど…。
0593nobodyさん
05/01/05 15:36:47ID:???>| <strong>
文章 → 文章
|< </strong>
みたいな事をしたいのですが、どうしたらよいでしょうか。
自分で考えたのは
$mes =~ s/(>\|)((\n*.*)*)(\|<)/<strong>$2<\/strong>/g;
この場合
>|あああ|< → <strong>あああ|<
>|いいい|< >|いいい</strong>
となるので
$mes =~ s/(>\|)((\n*[^(<\|)]*)*)(\|<)/<strong>$2<\/strong>/g;
としたのですが、これだと >| |< の中にlやtがあっても駄目です。
0594nobodyさん
05/01/05 18:04:47ID:???正規表現の部分にちょっと無駄な部分があるような希ガス
$mes =~ s/>\|(.*?)\|</<strong>$1<\/strong>/gs;
(Perl5以上で)これでいいんじゃないかな。
解説
・ >| と |< を括弧でくくる理由がわからない。
・繰り返し記号の後に ? を使ったら、最短でマッチする。
・オプション s を使うと、 . (←半角ドットね^^;)も改行文字にマッチするようになる。
0595nobodyさん
05/01/05 18:07:50ID:???ごめん、ちょっと電波が
$mes =~ s/>\|/<strong>/g;
$mes =~ s/\|</<\/strong>/g;
じゃだめなの?
0596nobodyさん
05/01/05 18:39:11ID:???>|
ちりぬるを
|<
いろはにほへと|<
とかなっていた時に困った事になるんです。
なので、「>|を発見したら、以降に|<があればそれぞれを置換し、これを最後まで繰り返す」ような事を
したい訳なのですが、いい案が思いつかないんですよね・・・。
0597nobodyさん
05/01/05 18:43:18ID:???「>|」とかっていうのは記号の例えでして、掲示板でタグを使えない代わりに
そういう記号でマークアップさせようという意図からです。・・・が正直厳しいです。
>・繰り返し記号の後に ? を使ったら、最短でマッチする。
>・オプション s を使うと、 . (←半角ドットね^^;)も改行文字にマッチするようになる。
勉強になりました!ありがとうございます。
0598nobodyさん
05/01/05 19:11:13ID:???$mes =~ s/>\|(.*?)\|</<strong>$1<\/strong>/gs;
ってやってしまおう。
括弧でくくる、ってのは
(>\|)
これね。グルーピング、説明不足ですまん
0599nobodyさん
05/01/05 21:09:19ID:fN7gQymPあいうえおかきく
print "@$row[0]\n"; を実行した結果が、
あいう
えおか
きく
となる配列の要素を、
「あいう」、「えおか」、「きく」
それぞれ別の変数(もしくは配列)に入れる方法を教えてください。
print "$a, $b, $c"; を実行すると、
あいう, えおか, きく
(↑例えばこのように出力したい)
chomp、 split(/\n/, @$row[0]) では不可でした。
0600nobodyさん
05/01/05 21:40:56ID:???print "@a"; を print "@a\n";にかえただけで改行が
少なくとも2箇所増えるような@aはオレには思いつかない。
0601nobodyさん
05/01/05 22:30:59ID:DtV5vUlCDBに格納してあるutf8の文字列を取得するとき、その都度 utf8::decode($str)
としてUTF8フラグを付けているのですが、自動的にUTF8フラグが付くようにする
にはどのようにしたらよいのでしょうか?
0602593
05/01/05 23:36:16ID:???ありがとうございます。
$mes =~ s/>\|(.*?)\|</<strong>$1<\/strong>/gs;
にしたら動くには動いたのですが
>| <strong>
>|ああああ|<→ >|ああああ</strong>
|< |<
となってしまいました・・・結果を見れば多少納得しつつも改善策が思いつかないです・・・。
Wiki的記法スクリプト作ってる人って凄い・・・orz
0603nobodyさん
05/01/05 23:40:02ID:???$mes =~ s/>\|(.*?)\|</<strong>$1<\/strong>/gs;
を2行連続して書く事で602の現象は回避できました・・・が、
これだと激しく手順がおかしい・・・(;´Д`)
0604nobodyさん
05/01/05 23:40:55ID:???文章の整形や修飾に関しては全然難しい事やってないよ。
0605nobodyさん
05/01/05 23:49:42ID:???その質問の真意はよくわからんけど、
馬鹿正直に答えるとまずprint関数の定義をいじらんとダメかな。
perlはめちゃくちゃな言語なんでいじる手段は複数あるよ。
でも、きっと君が望む回答じゃないと思う。
まず本当に自分がやりたい事を整理しなされ
0606nobodyさん
05/01/05 23:59:20ID:???そうなんですか。
実は読んだのですが、2日前にPerl始めたばっかりなんで結構チンプンカンプンでした・・・。
精進します。
0607nobodyさん
05/01/06 03:24:55ID:???0608nobodyさん
05/01/06 06:40:28ID:???括弧の種類が一つならば、ネストは考えなくてもいい。
my ($open, $close);
$data =~ s/(>\|)|(\|<)/$1 ? ($open++, "<strong>") : ($close++, "<\/strong>")/ge;
($open > $close) and die "開き括弧が多すぎます";
($open < $close) and die "閉じ括弧が多すぎます";
0609608
05/01/06 12:23:08ID:???my ($open, $close);
$data =~ s/(>\|)|(\|<)/
$1 ? ($open++, "<strong>") :
(($open <= $close and die "対応する開き括弧が見つかりません"),
$close++, "<\/strong>")/ge;
($open > $close) and die "対応する閉じ括弧が見つかりません";
0610ty8it
05/01/06 12:31:38ID:???0612nobodyさん
05/01/06 12:49:00ID:???|<あああ>| →</strong>あああ<strong>
|>| →</strong>strong>
この辺りを許容するかどうかだけどね。
許容するなら、>>595のでもいいし。
0613599
05/01/06 13:53:22ID:???回答ありがとうございました。解決しました。
print文がLoopされていて
@$row[0] がそのつど書き換わっていただけでした。
素人甚だしく申し訳ございませなんだ
■ このスレッドは過去ログ倉庫に格納されています