perl split函数使用两个分隔符

时间:2015-10-13 14:40:39

标签: perl

我正在阅读Perl中的文件,我想根据两个分隔符拆分值。

col1        col2
uc011nbb.2  NM_001039567
uc004fuo.4  NM_001006120
uc011nbc.2  NM_001006121
uc010nwz.3  NM_001006121

col 1和col2由制表符分隔,所以我通常使用它:

my @cols = split(/\t/); 

但是,我想将col1拆分为'。'。如何修改我的分割功能?

1 个答案:

答案 0 :(得分:6)

您可以使用character class对两种可能性进行编码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
    <link rel="icon" href="./favicon.ico" type="image/x-icon" />
    <link rel="shortcut icon" href="./favicon.ico" type="image/x-icon" />
    <title>phpMyAdmin</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="phpmyadmin.css.php?token=9775ad90f6ea663e0dca57d06ea7829a&amp;js_frame=right&amp;nocache=4099247312" />
    <link rel="stylesheet" type="text/css" href="print.css" media="print" />
    <script type="text/javascript">
    try {
        // can't access this if on a different domain
        var topdomain = top.document.domain;
        // double-check just for sure
        if (topdomain != self.document.domain) {
            alert("Redirecting...");
            top.location.replace(self.document.URL.substring(0, self.document.URL.lastIndexOf("/")+1));
        }
    }
    catch(e) {
            alert("Redirecting... (error: " + e);
            top.location.replace(self.document.URL.substring(0, self.document.URL.lastIndexOf("/")+1));
    }

    </script>
        <script type="text/javascript">
    // <![CDATA[
    // Updates the title of the frameset if possible (ns4 does not allow this)
    if (typeof(parent.document) != 'undefined' && typeof(parent.document) != 'unknown'
        && typeof(parent.document.title) == 'string') {
        parent.document.title = '68.178.140.77 / dilorg / wp_events_answer';
    }

    // ]]>
    </script>

    <script src="./js/tooltip.js" type="text/javascript"></script>
    <meta name="OBGZip" content="true" />
        <!--[if IE 6]>
    <style type="text/css">
    /* <![CDATA[ */
    html {
        overflow-y: scroll;
    }
    /* ]]> */
    </style>
    <![endif]-->
</head>

<body>
<div id="TooltipContainer" onmouseover="holdTooltip();" onmouseout="swapTooltip('default');"></div>
    <div id="serverinfo">
<a href="main.php?token=9775ad90f6ea663e0dca57d06ea7829a" class="item">        <img class="icon" src="./themes/original/img/s_host.png" width="16" height="16" alt="" /> 
Server: 68.178.140.77</a>
        <span class="separator"><img class="icon" src="./themes/original/img/item_ltr.png" width="5" height="9" alt="-" /></span>
<a href="db_structure.php?db=dilorg&amp;token=9775ad90f6ea663e0dca57d06ea7829a" class="item">        <img class="icon" src="./themes/original/img/s_db.png" width="16" height="16" alt="" /> 
Database: dilorg</a>

<!-- PMA-SQL-ERROR -->
    <div class="error"><h1>Error</h1>
    <p><strong>SQL query:</strong>
<a href="tbl_sql.php?db=dilorg&amp;table=wp_events_answer&amp;token=9775ad90f6ea663e0dca57d06ea7829a&amp;sql_query=SHOW+TABLE+STATUS+LIKE+%27wp_events_answer%27%3B&amp;show_query=1"><img class="icon" src=" ./themes/original/img/b_edit.png" width="16" height="16" alt="Edit" /></a>    </p>
    <p>
        <span class="syntax"><span class="syntax_alpha syntax_alpha_reservedWord">SHOW</span>  <span class="syntax_alpha syntax_alpha_reservedWord">TABLE</span>  <span class="syntax_alpha syntax_alpha_reservedWord">STATUS</span>  <span class="syntax_alpha syntax_alpha_reservedWord">LIKE</span>  <span class="syntax_quote syntax_quote_single">'wp_events_answer'</span><span class="syntax_punct syntax_punct_queryend">;</span><br /><br /></span>
    </p>
<p>
    <strong>MySQL said: </strong><a href="http://dev.mysql.com/doc/refman/5.0/en/error-messages-server.html" target="mysql_doc"><img class="icon" src="./themes/original/img/b_help.png" width="11" height="11" alt="Documentation" title="Documentation" /></a>
</p>
<code>
#2006 - MySQL server has gone away
</code><br />
</div><fieldset class="tblFooters">    </fieldset>

<script type="text/javascript">
//<![CDATA[
// updates current settings
if (window.parent.setAll) {
    window.parent.setAll('en-utf-8', 'utf8_unicode_ci', '1', 'dilorg', 'wp_events_answer', '9775ad90f6ea663e0dca57d06ea7829a');
}
    // set current db, table and sql query in the querywindow
if (window.parent.reload_querywindow) {
    window.parent.reload_querywindow(
        'dilorg',
        'wp_events_answer',
        '');
}

if (window.parent.frame_content) {
    // reset content frame name, as querywindow needs to set a unique name
    // before submitting form data, and navigation frame needs the original name
    if (typeof(window.parent.frame_content.name) != 'undefined'
     && window.parent.frame_content.name != 'frame_content') {
        window.parent.frame_content.name = 'frame_content';
    }
    if (typeof(window.parent.frame_content.id) != 'undefined'
     && window.parent.frame_content.id != 'frame_content') {
        window.parent.frame_content.id = 'frame_content';
    }
    //window.parent.frame_content.setAttribute('name', 'frame_content');
    //window.parent.frame_content.setAttribute('id', 'frame_content');
}
//]]>
</script>
</body>
</html>

正如@Sobrique上面所说,在将split /[.\t]/; 用作分隔符之前,应确保.不会出现在任何列名中。

示例:

say foreach split /[.\t]/, "this is some.text that has\ttwo delimiters";
this is some
text that has
two delimiters