亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ch5.htm

?? prrl 5 programs codes in the book
?? HTM
?? 第 1 頁 / 共 4 頁
字號:
perform iNClude deleting elements, checking for the existeNCe

of an element, reversing all of the the elements in an array,

and sorting the elements. Table 5.2 lists the fuNCtions you can

use with arrays.<BR>

<P>

<CENTER><B>Table 5.2&nbsp;&nbsp;Array FuNCtions</B></CENTER>

<p>

<CENTER>

<TABLE BORDERCOLOR=#000000 BORDER=1 WIDTH=80%>

<TR><TD WIDTH=205><I>FuNCtion</I></TD><TD WIDTH=385><I>Description</I>

</TD></TR>

<TR><TD WIDTH=205><TT>defined(VARIABLE)</TT>

</TD><TD WIDTH=385>Returns true if <TT>VARIABLE</TT> has a real value and if the variable has not yet been assigned a value. This is not limited to arrays; any data type can be checked. Also see the <TT>exists</TT> fuNCtion for information about 
associative array keys.

</TD></TR>

<TR><TD WIDTH=205><TT>delete(KEY)</TT>

</TD><TD WIDTH=385>Removes the key-value pair from the given associative array. If you delete a value from the <TT>%ENV</TT> array, the environment of the current process is changed, not that of the parent.

</TD></TR>

<TR><TD WIDTH=205><TT>each(ASSOC_ARRAY)</TT>

</TD><TD WIDTH=385>Returns a two-element list that contains a key and value pair from the given associative array. The fuNCtion is mainly used so  you can iterate over the associate array elements. A null list is returned when the last element has been 
read.

</TD></TR>

<TR><TD WIDTH=205><TT>exists(KEY)</TT>

</TD><TD WIDTH=385>Returns true if the <TT>KEY</TT> is part of the specified associative array. For instaNCe, <TT>exists($array{&quot;Orange&quot;})</TT> returns true if the <TT>%array</TT> associative array has a key with the value of &quot;Orange.&quot;


</TD></TR>

<TR><TD WIDTH=205><TT>join(STRING, ARRAY)</TT>

</TD><TD WIDTH=385>Returns a string that consists of all of the elements of <TT>ARRAY</TT> joined together by <TT>STRING</TT>. For instaNCe, <TT>join(&quot;&gt;&gt;&quot;, (&quot;AA&quot;, &quot;BB&quot;, &quot;cc&quot;))</TT> returns 
<TT>&quot;AA&gt;&gt;BB&gt;&gt;cc&quot;</TT>.

</TD></TR>

<TR><TD WIDTH=205><TT>keys(ASSOC_ARRAY)</TT>

</TD><TD WIDTH=385>Returns a list that holds all of the keys in a given associative array. The list is not in any particular order.

</TD></TR>

<TR><TD WIDTH=205><TT>map(EXPRESSION, ARRAY)</TT>

</TD><TD WIDTH=385>Evaluates <TT>EXPRESSION</TT> for every element of <TT>ARRAY</TT>. The special variable <TT>$ </TT>is assigned each element of <TT>ARRAY</TT> immediately before <TT>EXPRESSION</TT> is evaluated.

</TD></TR>

<TR><TD WIDTH=205><TT>pack(STRING, ARRAY)</TT>

</TD><TD WIDTH=385>Creates a binary structure, using <TT>STRING</TT> as a guide, of the elements of <TT>ARRAY</TT>. You can look in <A HREF="ch8.htm" tppabs="http://cheminf.nankai.edu.cn/~eb~/Perl%205%20By%20Example/ch8.htm" >Chapter 8</A> &quot;RefereNCes,&quot; for more information.

</TD></TR>

<TR><TD WIDTH=205><TT>pop(ARRAY)</TT>

</TD><TD WIDTH=385>Returns the last value of an array. It also reduces the size of the array by one.

</TD></TR>

<TR><TD WIDTH=205><TT>push(ARRAY1, ARRAY2)</TT>

</TD><TD WIDTH=385>Appends the contents of <TT>ARRAY2</TT> to <TT>ARRAY1</TT>. This iNCreases the size of <TT>ARRAY1</TT> as needed.

</TD></TR>

<TR><TD WIDTH=205><TT>reverse(ARRAY)</TT>

</TD><TD WIDTH=385>Reverses the elements of a given array when used in an array context. When used in a scalar context, the array is converted to a string, and the string is reversed.

</TD></TR>

<TR><TD WIDTH=205><TT>scalar(ARRAY)</TT>

</TD><TD WIDTH=385>Evaluates the array in a scalar context and returns the number of elements in the array.

</TD></TR>

<TR><TD WIDTH=205><TT>shift(ARRAY)</TT>

</TD><TD WIDTH=385>Returns the first value of an array. It also reduces the size of the array by one.

</TD></TR>

<TR><TD WIDTH=205><TT>sort(ARRAY)</TT>

</TD><TD WIDTH=385>Returns a list containing the elements of <TT>ARRAY</TT> in sorted order. See <A HREF="ch8.htm" tppabs="http://cheminf.nankai.edu.cn/~eb~/Perl%205%20By%20Example/ch8.htm" >Chapter 8</A> &quot;RefereNCes,&quot; for more information.

</TD></TR>

<TR><TD WIDTH=205><TT>splice(ARRAY1, OFFSET, </TT>

</TD><TD WIDTH=385>Replaces elements of <TT>ARRAY1</TT> with elements 

</TD></TR>

<TR><TD WIDTH=205><TT>LENGTH, ARRAY2)</TT>

</TD><TD WIDTH=385>in <TT>ARRAY2</TT>. It returns a list holding any elements that were removed. Remember that the <TT>$[</TT> variable may change the base array subscript when determining the <TT>OFFSET</TT> value.

</TD></TR>

<TR><TD WIDTH=205><TT>split(PATTERN, STRING, LIMIT)</TT>

</TD><TD WIDTH=385>Breaks up a string based on some delimiter. In an array context, it returns a list of the things that were found. In a scalar context, it returns the number of things found.

</TD></TR>

<TR><TD WIDTH=205><TT>undef(VARIABLE)</TT>

</TD><TD WIDTH=385>Always returns the undefined value. In addition, it undefines <TT>VARIABLE</TT>, which must be a scalar, an entire array, or a subroutine name.

</TD></TR>

<TR><TD WIDTH=205><TT>unpack(STRING, ARRAY)</TT>

</TD><TD WIDTH=385>Does the opposite of <TT>pack()</TT>. 

</TD></TR>

<TR><TD WIDTH=205><TT>unshift(ARRAY1, ARRAY2)</TT>

</TD><TD WIDTH=385>Adds the elements of <TT>ARRAY2</TT> to the front of <TT>ARRAY1</TT>. Note that the added elements retain their original order. The size of the new <TT>ARRAY1</TT> is returned.

</TD></TR>

<TR><TD WIDTH=205><TT>values(ASSOC_ARRAY)</TT>

</TD><TD WIDTH=385>Returns a list that holds all of the values in a given associative array. The list is not in any particular order.

</TD></TR>

</TABLE>

</CENTER>

<P>

<P>

As with the string fuNCtions, only a few of these fuNCtions will

be explored. ONCe you see the examples, you'll be able to handle

the rest with no trouble.

<H3><A NAME="ExamplePrintinganAssociativeArray">

Example: Printing an Associative Array</A></H3>

<P>

The <TT>each()</TT> fuNCtion returns

key, value pairs of an associative array one-by-one in a list.

This is called <I>iterating</I> over the elements of the array.

Iteration is a synonym for looping. So, you also could say that

the <TT>each()</TT> fuNCtion starts

at the beginning of an array and loops through each element until

the end of the array is reached. This ability lets you work with

key, value pairs in a quick easy manner.

<P>

The <TT>each()</TT> fuNCtion does

not loop by itself. It needs a little help from some Perl control

statements. For this example, we'll use the <I>while</I> loop

to print an associative array. The <TT>while

(CONDITION) {}</TT> control statement continues to execute

any program code surrounded by the curly braces until the <TT>CONDITION</TT>

turns false.

<P>

<IMG SRC="pseudo.gif" tppabs="http://cheminf.nankai.edu.cn/~eb~/Perl%205%20By%20Example/pseudo.gif" BORDER=1 ALIGN=RIGHT><p>

<BLOCKQUOTE>

<I>Create an associative with number, color pairs.<BR>

Using a while loop, iterate over the array elements.<BR>

Print the key, value pair.</I>

</BLOCKQUOTE>

<BLOCKQUOTE>

<PRE>

%array = ( &quot;100&quot;, &quot;Green&quot;, &quot;200&quot;, &quot;Orange&quot;);



while (($key, $value) = each(%array)) {

      print(&quot;$key = $value\n&quot;);

}

</PRE>

</BLOCKQUOTE>

<P>

This program prints:

<BLOCKQUOTE>

<PRE>

100 = Green

200 = Orange

</PRE>

</BLOCKQUOTE>

<P>

The <TT>each()</TT> fuNCtion returns

false when the end of the array is reached. Therefore, you can

use it as the basis of the <TT>while</TT>'s

condition. When the end of the array is reached, the program continues

execution after the closing curly brace. In this example, the

program simply ends.

<H3><A NAME="ExampleCheckingtheExisteNCeofanElement">

Example: Checking the ExisteNCe of an Element</A></H3>

<P>

You can use the <TT>defined()</TT>

fuNCtion to check if an array element exists before you assign

a value to it. This ability is very handy if you are reading values

from a disk file and don't want to overlay values already in memory.

For instaNCe, suppose you have a disk file of customers' addresses

and you would like to know if any of them are duplicates. You

check for duplicates by reading the information one address at

a time and assigning the address to an associative array using

the customer name as the key value. If the customer name already

exists as a key value, then that address should be flagged for

follow up.

<P>

Because we haven't talked about disk files yet, we'll need to

emulate a disk file with an associative array. And, instead of

using customer's address, we'll use customer number and customer

name pairs. First, we see what happens when an associative array

is created and two values have the same keys.

<P>

<IMG SRC="pseudo.gif" tppabs="http://cheminf.nankai.edu.cn/~eb~/Perl%205%20By%20Example/pseudo.gif" BORDER=1 ALIGN=RIGHT><p>

<BLOCKQUOTE>

<I>Call the </I><TT><I>createPair()</I></TT><I>

fuNCtion three times to create three key, value pairs in the </I><TT><I>%array</I></TT><I>

associative array.<BR>

Loop through </I><TT><I>%array</I></TT><I>,

printing each key, value pair.<BR>

Define the </I><TT><I>createPair()</I></TT><I>

fuNCtion.<BR>

Create local variables to hold the key, value pair passed as parameters.

<BR>

Create an array element to hold the key, value pair.</I>

</BLOCKQUOTE>

<BLOCKQUOTE>

<PRE>

createPair(&quot;100&quot;,  &quot;Kathy Jones&quot;);

createPair(&quot;200&quot;,  &quot;Grace Kelly&quot;);

createPair(&quot;100&quot;, &quot;George Orwell&quot;);



while (($key, $value) = each %array) {

    print(&quot;$key, $value\n&quot;);

};



sub createPair{

    my($key, $value) = @_ ;



    $array{$key} = $value;

};

</PRE>

</BLOCKQUOTE>

<P>

This program prints:

<BLOCKQUOTE>

<PRE>

100, George Orwell

200, Grace Kelly

</PRE>

</BLOCKQUOTE>

<P>

This example takes advantages of the global nature of variables.

Even though the <TT>%array</TT> element

is set in the <TT>createPair()</TT>

fuNCtion, the array is still accessible by the main program. Notice

that the first key, value pair (100 and Kathy Jones) are overwritten

when the third key, value pair is eNCountered. You can see that

it is a good idea to be able to determine when an associative

array element is already defined so that duplicate entries can

be handled. The next program does this.

<P>

<IMG SRC="pseudo.gif" tppabs="http://cheminf.nankai.edu.cn/~eb~/Perl%205%20By%20Example/pseudo.gif" BORDER=1 ALIGN=RIGHT><p>

<BLOCKQUOTE>

<I>Call the </I><TT><I>createPair()</I></TT><I>

fuNCtion three times to create three key,  value pairs in the

</I><TT><I>%array</I></TT><I> associative

array.<BR>

Loop through </I><TT><I>%array</I></TT><I>,

printing each key, value pair.<BR>

Define the </I><TT><I>createPair()</I></TT><I>

fuNCtion.<BR>

Create local variables to hold the key, value pair passed as parameters.

<BR>

If the key, value pair already exists in </I><TT><I>%array</I></TT><I>,

then iNCrement<BR>

 the customer number by one. Check to see if the new key, value

<BR>

pair exists. If so, keep iNCrementing until a nonexistent<BR>

key, value pair is found.<BR>

Create an array element to hold the key, value pair.</I>

</BLOCKQUOTE>

<BLOCKQUOTE>

<PRE>

createPair(&quot;100&quot;,  &quot;Kathy Jones&quot;);

createPair(&quot;200&quot;,  &quot;Grace Kelly&quot;);

createPair(&quot;100&quot;, &quot;George Orwell&quot;);



while (($key, $value) = each %array) {

    print(&quot;$key, $value\n&quot;);

};



sub createPair{

    my($key, $value) = @_ ;



    while (defined($array{$key})) {

        $key++;

    }



    $array{$key} = $value;

};

</PRE>

</BLOCKQUOTE>

<P>

This program prints:

<BLOCKQUOTE>

<PRE>

100, George Orwell

101, Kathy Jones

200, Grace Kelly

</PRE>

</BLOCKQUOTE>

<P>

You can see that the customer number for Kathy Jones has been

changed to 101. If the array had already had an entry for 101,

the Kathy Jones' new customer number would be 102.

<H2><A NAME="Summary"><FONT SIZE=5 COLOR=#FF0000>

Summary</FONT></A></H2>

<P>

In this chapter you've learned about fuNCtions-what they are and

how to call them. You saw that you can create your own fuNCtion

or use one of Perl's many built-in fuNCtions. Each fuNCtion can

accept any number of parameters which get delivered to the fuNCtion

in the form of the <TT>@ </TT>array.

This array, like any other array in Perl, can be accessed using

the array element to access an individual element. ( For instaNCe,

<TT>$_ [0]</TT> accesses the first

element in the <TT>@ </TT>array.)

Because Perl parameters are passed by refereNCe, changing the

<TT>@</TT> array changes the values

in the main program as well as the fuNCtion.

<P>

You learned about the scope of variables and how all variables

are global by default. Then, you saw how to create variable with

local scope using <TT>local()</TT>

and <TT>my()</TT>. <TT>My()</TT>

is the better choice in almost all situations because it enforces

local scope and limits side effects from fuNCtion to inside the

fuNCtions.

<P>

Then you saw that it was possible to nest fuNCtion calls, which

means that one fuNCtion can call another, which in turn can call

another. You  also might call this a chain of fuNCtion calls.

Private fuNCtions were introduced next. A private fuNCtion is

one that only can be used inside the fuNCtion that defines it.

<P>

A list of string fuNCtions then was presented. These iNCluded

fuNCtions to remove the last character, eNCrypt a string, find

a sub-string, convert array elements into a string, change the

case of a string character, and find the length of a string. Examples

were shown about how to change a string's characters and how to

search a string.

<P>

The section on array fuNCtions showed that Perl has a large number

of fuNCtions that deal specifically with arrays. The list of fuNCtions

iNCluded the ability to delete elements, return key, value pairs

from associative arrays, reverse an array's elements, and sort

an array. Examples were shown for printing an associative array

and checking for the existeNCe of an element.

<P>

The next chapter, &quot;Statements,&quot; goes into detail about

what statements are and how you create them. The information that

you learned about variables and fuNCtions will come into play.

You'll see how to link variables and fuNCtions together to form

expressions and statements.

<H2><A NAME="ReviewQuestions"><FONT SIZE=5 COLOR=#FF0000>

Review Questions</FONT></A></H2>

<P>

Answers to Review Questions are in Appendix A.

<OL>

<LI>What is a parameter?

<LI>What two fuNCtions are used to create variables with local

scope?

<LI>What does parameter passing by refereNCe mean?

<LI>What is the <TT>@_ </TT>array

used for?

<LI>Do Perl variables have global or local scope by default?

<LI>Why is it hard to pass two arrays to a fuNCtion?

<LI>What is the differeNCe between variables created with <TT>local()</TT>

and variables created with <TT>my()</TT>?

<LI>What does the <TT>map()</TT> fuNCtion

do?

</OL>

<H2><A NAME="ReviewExercises"><FONT SIZE=5 COLOR=#FF0000>

Review Exercises</FONT></A></H2>

<OL>

<LI>Create a fuNCtion that prints its own parameter list.

<LI>Create a program that uses three fuNCtions to demonstrate

fuNCtion call nesting.

<LI>Use the <TT>chop()</TT> fuNCtion

in a program. Print both the returned character and the string

that was passed as a parameter.

<LI>Run the following program to see how many levels of recursion

your system configuration supports:<BR>

<BR>

<TT>firstSub();<BR>

<BR>

sub firstSub{<BR>

  print(&quot;$count\n&quot;);<BR>

        $count++;<BR>

        firstSub();<BR>

}</TT>

<LI>Write a fuNCtion that uses the <TT>substr()</TT>

and <TT>uc()</TT> fuNCtions to change

the tenth through twentieth characters to uppercase.

<LI>Write a fuNCtion that uses the <TT>keys()</TT>

fuNCtion to print out the values of an associative array.

<LI>Create a program that uses a private fuNCtion to subtract

two numbers and multiply the result by four.

<LI>Write a program that shows what the <TT>shift()</TT>

and <TT>unshift()</TT> fuNCtions do.

<LI>Write a program that shows what the <TT>push()</TT>

and <TT>pop()</TT> fuNCtions do.

</OL>

<HR>



<CENTER><P><A HREF="ch4.htm" tppabs="http://cheminf.nankai.edu.cn/~eb~/Perl%205%20By%20Example/ch4.htm"><IMG SRC="pc.gif" tppabs="http://cheminf.nankai.edu.cn/~eb~/Perl%205%20By%20Example/pc.gif" BORDER=0 HEIGHT=88 WIDTH=140></A>

<A HREF="#CONTENTS"><IMG SRC="cc.gif" tppabs="http://cheminf.nankai.edu.cn/~eb~/Perl%205%20By%20Example/cc.gif" BORDER=0 HEIGHT=88 WIDTH=140></A>

<A HREF="index-1.htm" tppabs="http://cheminf.nankai.edu.cn/~eb~/Perl%205%20By%20Example/index-1.htm"><IMG SRC="hb.gif" tppabs="http://cheminf.nankai.edu.cn/~eb~/Perl%205%20By%20Example/hb.gif" BORDER=0 HEIGHT=88 WIDTH=140></A>

<A HREF="ch6.htm" tppabs="http://cheminf.nankai.edu.cn/~eb~/Perl%205%20By%20Example/ch6.htm"><IMG SRC="nc.gif" tppabs="http://cheminf.nankai.edu.cn/~eb~/Perl%205%20By%20Example/nc.gif" BORDER=0 HEIGHT=88 WIDTH=140></A>

<HR WIDTH="100%"></P></CENTER>

</BODY>

</HTML>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
337p粉嫩大胆噜噜噜噜噜91av| 久久久久久久久97黄色工厂| 精品国产a毛片| 国产精品―色哟哟| 婷婷综合在线观看| 欧美熟乱第一页| 中文字幕中文字幕在线一区 | 成人avav在线| 国产精品乱码妇女bbbb| 国产尤物一区二区| 日韩免费电影网站| 狠狠色丁香婷婷综合久久片| 精品福利在线导航| 国产成人高清在线| **欧美大码日韩| 成人午夜短视频| 在线成人午夜影院| 亚洲国产一区视频| 色老汉av一区二区三区| 亚洲人成网站色在线观看| 一本色道亚洲精品aⅴ| 一区二区三区中文字幕| 在线观看亚洲一区| 婷婷综合五月天| 欧美三级电影在线看| 午夜精品福利一区二区蜜股av| 欧美日韩精品免费| 久久99国内精品| 欧美国产综合色视频| 色婷婷激情一区二区三区| 亚洲男人的天堂网| 在线播放/欧美激情| 国产自产高清不卡| 国产精品乱码妇女bbbb| 欧美日韩在线观看一区二区| 美女视频一区二区三区| 精品成人在线观看| 99久久精品国产一区| 亚洲h在线观看| 久久久久久久精| 一本一本大道香蕉久在线精品 | 日韩欧美电影在线| 精品一区二区三区免费播放| 国产精品成人在线观看| 欧美日韩国产综合一区二区| 久久国产尿小便嘘嘘| 国产精品视频一二| 4438成人网| a美女胸又www黄视频久久| 性久久久久久久久| 久久综合色8888| 一本久久精品一区二区| 蜜桃一区二区三区在线观看| 国产精品入口麻豆九色| 欧美美女直播网站| 成人理论电影网| 奇米在线7777在线精品| 1024成人网色www| 综合久久久久久| 成人免费高清在线| 一区二区不卡在线播放| 精品国产一区二区亚洲人成毛片| 国内外成人在线| 日韩一区在线播放| 久久久五月婷婷| 欧美三区免费完整视频在线观看| 国产一区二区三区四区在线观看| 一区二区三区在线播放| 日本一区二区高清| 欧美一区二区成人6969| 色婷婷国产精品久久包臀| 国产乱码精品1区2区3区| 午夜视频一区二区三区| 亚洲少妇30p| 亚洲午夜国产一区99re久久| 久久精品一区二区三区四区| 日韩欧美在线网站| 欧美日韩精品综合在线| 欧美色窝79yyyycom| 欧美日韩国产美女| 91在线观看视频| 国产福利91精品| 午夜精品久久久久久久| 亚洲一区二区在线观看视频| 中文在线免费一区三区高中清不卡| 日韩午夜在线影院| 色综合色综合色综合色综合色综合| 风流少妇一区二区| 国产一区二区免费看| 久久国产尿小便嘘嘘| 麻豆国产精品777777在线| 日韩va亚洲va欧美va久久| 亚洲午夜一区二区| 午夜av一区二区三区| 亚洲一区成人在线| 亚洲丶国产丶欧美一区二区三区| 一区二区三区.www| 亚洲一区二区欧美激情| 亚洲日本免费电影| 亚洲老妇xxxxxx| 亚洲一区二区三区国产| 日韩午夜激情av| 成人美女视频在线看| 丁香激情综合国产| 91黄色免费观看| 欧美熟乱第一页| 日韩欧美区一区二| 国产精品美女久久久久aⅴ | 欧美精品在线视频| 日韩精品在线网站| 国产精品对白交换视频| 亚洲高清视频的网址| 九九视频精品免费| 国产一区二区中文字幕| 欧美日韩久久久| 日韩精品一区二区三区在线观看| 日韩欧美123| 综合亚洲深深色噜噜狠狠网站| 日本欧美一区二区三区乱码| 国产成人综合网| 综合色天天鬼久久鬼色| 国产欧美精品一区aⅴ影院 | 蜜桃久久av一区| 欧美日韩一区在线观看| 国产日本欧洲亚洲| 亚洲第一成人在线| 欧美白人最猛性xxxxx69交| 色综合天天综合色综合av| 一区二区三区中文字幕精品精品 | 欧美自拍偷拍午夜视频| 成人精品视频一区二区三区| 激情伊人五月天久久综合| 一级做a爱片久久| www.欧美精品一二区| 亚洲一区二区三区四区五区中文 | 欧美午夜精品电影| 久久久亚洲欧洲日产国码αv| 中文字幕一区二区三区色视频 | 色www精品视频在线观看| 久久久综合精品| 狠狠色丁香久久婷婷综合丁香| 欧美日韩国产美| 午夜在线成人av| 色综合久久久久综合体| 亚洲一区影音先锋| www.欧美.com| 夜夜精品浪潮av一区二区三区| 成人av片在线观看| 精品99久久久久久| 午夜精品福利一区二区三区av | 国产自产高清不卡| 欧美不卡一二三| 99久久精品国产麻豆演员表| 亚洲麻豆国产自偷在线| 欧美精品高清视频| 日本免费在线视频不卡一不卡二| 久久九九全国免费| 91免费国产在线观看| 亚洲mv大片欧洲mv大片精品| 欧美一级高清片| 91久久香蕉国产日韩欧美9色| 一区在线中文字幕| 欧美在线视频全部完| 免费视频最近日韩| 国产精品国产a| 欧美成人vr18sexvr| 99天天综合性| 国产一区二区在线看| 欧美在线视频你懂得| 亚洲综合成人在线| 在线亚洲欧美专区二区| 亚洲免费在线视频一区 二区| heyzo一本久久综合| 亚洲女人的天堂| 欧美亚洲日本国产| 婷婷综合久久一区二区三区| 欧美精品九九99久久| 久久精品99国产精品| 精品成人在线观看| 国产v综合v亚洲欧| 亚洲日本青草视频在线怡红院 | 91超碰这里只有精品国产| 免费观看久久久4p| 亚洲精品一线二线三线| 国产999精品久久久久久| 日韩一区日韩二区| 欧美日韩一区 二区 三区 久久精品 | 麻豆91精品91久久久的内涵| 精品国产伦一区二区三区观看体验| 国产一区欧美日韩| 中文字幕一区二区不卡| 欧美在线小视频| 美女网站色91| 国产精品午夜在线观看| 91成人免费电影| 久久se精品一区二区| 国产精品看片你懂得| 欧美性生活影院| 狠狠色丁香久久婷婷综| 亚洲日本va午夜在线影院|